I have two different C/C++ functions that do something. I think one may be a lot faster and I want to find out how much faster. So I do it in a loop a jillion times and time the loop.
Further, I think it might be so fast that the raw time just doing a loop to test it a jillion times could be taking, so I want to subtract out the cost of doing an empty loop.
And yet, code such as the following quite often reports the empty loop taking more time than a loop with a function, despite doing the loop 100 million times. I've taken to doing the empty loop twice but still it's sometimes slower.
Example code comparing two functions with two empty loops:
  tp1 = chrono::high_resolution_clock::now();
  for ( i = 0; i < iRepeats; i++ )
      ;
  tp2 = chrono::high_resolution_clock::now();
  for ( i = 0; i < iRepeats; i++ )
       iLen = Function1();
  tp3 = chrono::high_resolution_clock::now();
  for ( i = 0; i < iRepeats; i++ )
       iLen = Function2();
  tp4 = chrono::high_resolution_clock::now();
  for ( i = 0; i < iRepeats; i++ )
      ;
  tp5 = chrono::high_resolution_clock::now();
  double dDurEmpty1 = chrono::duration<double>( tp2 - tp1 ).count();
  double dDurEmpty2 = chrono::duration<double>( tp5 - tp4 ).count();
  double dDurEmpty  = AKMin( dDurEmpty1, dDurEmpty2 );
  double dDurA = chrono::duration<double>( tp3 - tp2 ).count();
  double dDurB = chrono::duration<double>( tp4 - tp3 ).count();
  printf( "Length:          %7.4fx faster\n",
            ( dDurA - dDurEmpty ) / ( dDurB - dDurEmpty )   );
I'm not wedded to this general approach at all if there's any suggestion of different ways to do it.
