Wednesday, April 24, 2013

comparison of c++ operations


loop i                         235ms    49995000
loop i/3.0/3.0/3.0             3405ms   1851666,667
loop i*(a)*(a)*(a) 220ms    1851666,667 a = 1.0/3.0
loop i*0.33333*0.333..*0.333.. 220ms    1851666,667
loop i/2.0/2.5/5.0             2076ms   1999800
loop i*0.5*0.4*0.2             168ms    1999800
loop i*3.0 + i*3.0 + i*3.0     247ms    449955000
loop i+i+i + i+i+i+ i+i+i      166ms    449955000
loop i*2+i*3+i*4               161ms    449955000
loop i+i+ i+i+i+ i+i+i+i       166ms    449955000
loop i*i*i+i*i*i+i*i*i         338ms    1,21408E+11
loop pow(i,2)+pow(i,3)+pw(i,4) 22505ms  2,00E+19
loop sqrt(i)+sqrt(i+1)+sqrt(i+2)   4063ms   2000148,383




  const int SIZE = 10000;
  const int RUNS = 10000;
  double* arry = new double[SIZE];
  Stopwatch^ watch;
  double sum;
  
  watch = Stopwatch::StartNew();
  sum = 0;
  for (int irun = 0; irun < RUNS; irun++)
  {
    int i=0.0;
    for (auto it = arry; it != &arry[SIZE]; it++)
    {
      *it = i/3.0/3.0/3.0;
      i++;
    }
  }
  watch->Stop();
  for (auto it = arry; it != &arry[SIZE]; it++)
  {
    sum += *it;
  }
  Console::WriteLine("loop i/3.0/3.0/3.0            
    : \t{0}ms \t({1})", watch->ElapsedMilliseconds, sum);




Intel(R) Core(TM) i7 CPU Q 740 @1.73GHz
RAM 8 GM
Windows 7 x64 sp1
Visual Studio 2012
/GS /GL /analyze- /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"Release\vc110.pdb" /fp:precise /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Oy- /clr /FU

















No comments:

Post a Comment