Re: using MFC VC++ - which is more efficient - float or double?
I guess you are right about the speed. I just did my own test and then
realized afterwards that you already had one at the bottom of your last post.
I was right about one thing - multiplies are still much faster than divides.
I did a loop of 2 billion calculations. The divides took about 24.9 seconds
while the multiplies took 3.9 seconds. Which is why you are better off to do
a = b * 0.5;
rather than
a = b/2.0;
If speed is important, that is. For whatever its worth, here's the code I
used. Just run it without optimizations or it takes zero seconds!
#include <stdio.h>
#include "Timer.h"
#define CYCLES 2000000000
int main ()
{
CTimer timer;
float a,b,c;
double x,y,z;
int i;
a = 2.0F;
b = 3.0F;
x = 2.0;
y = 3.0;
timer.startTimer();
for (i=0; i<CYCLES; i++)
c = a/b;
printf ("Float Time: %f Seconds\n", timer.stopTimer());
timer.startTimer();
for (i=0; i<CYCLES; i++)
z = x/y;
printf ("Double Time: %f Seconds\n", timer.stopTimer());
return 1;
}
#include <sys\timeb.h>
class CTimer
{
public:
void startTimer (void)
{
_ftime (&t1);
}
float stopTimer (void)
{
float delta;
_ftime (&t2);
delta = ( (float) (t2.time) + (float) (t2.millitm) / 1000.0F) -
( (float) (t1.time) + (float) (t1.millitm) / 1000.0F);
return delta;
}
private:
struct _timeb t1, t2;
};