我有两个不同的 C/C++ 函数可以做一些事情。我认为一个可能会快很多,我想知道快多少。所以我在一个循环中执行了数万亿次并为循环计时。
此外,我认为它可能是如此之快,以至于只做一个循环来测试它的原始时间可能会花费数万亿次,所以我想减去做一个空循环的成本。
然而,尽管执行了 1 亿次循环,但以下代码经常报告空循环比带有函数的循环花费更多时间。我已经采取了两次空循环,但有时还是比较慢。
将两个函数与两个空循环进行比较的示例代码:
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 ) );
如果有任何不同方法的建议,我根本不喜欢这种通用方法。