我正在使用 Google Benchmark 来测量一些代码的执行时间。例如,我编写了以下代码来衡量其执行时间性能。
#include <benchmark/benchmark.h>
// Alternatively, can add libraries using linker options.
#ifdef _WIN32
#pragma comment ( lib, "Shlwapi.lib" )
#ifdef _DEBUG
#pragma comment ( lib, "benchmarkd.lib" )
#else
#pragma comment ( lib, "benchmark.lib" )
#endif
#endif
static void BenchmarkTestOne(benchmark::State& state) {
int Sum = 0;
while (state.KeepRunning())
{
for (size_t i = 0; i < 100000; i++)
{
Sum += i;
}
}
}
static void BenchmarkTestTwo(benchmark::State& state) {
int Sum = 0;
while (state.KeepRunning())
{
for (size_t i = 0; i < 10000000; i++)
{
Sum += i;
}
}
}
// Register the function as a benchmark
BENCHMARK(BenchmarkTestOne);
BENCHMARK(BenchmarkTestTwo);
// Run the benchmark
BENCHMARK_MAIN();
当上面的代码运行时,它显示了以下结果:
Benchmark Time CPU Iterations
-----------------------------------------------------------
BenchmarkTestOne 271667 ns 272770 ns 2635
BenchmarkTestTwo 27130981 ns 27644231 ns 26
但我无法弄清楚这里的迭代是什么意思?还有为什么时间和CPU彼此不同?