Я делаю тест производительности различных реализаций таблицы Ha sh. Код читает целые числа из вектора в памяти и записывает их в таблицу ha sh.
Вот мой код для базового класса теста
class ConcurrentBenchmark : public benchmark::Fixture {
protected:
vector<int32_t> values;
public:
ConcurrentBenchmark() {
srand(time(NULL));
int total = 1000000;
for (int i = 0; i < total; ++i) {
values.push_back(rand() % 1000);
}
}
virtual ~ConcurrentBenchmark() {}
};
BENCHMARK_F(ConcurrentBenchmark, Int32) {...}
BENCHMARK_F(ConcurrentBenchmark, Int64) {...}
BENCHMARK_F(ConcurrentBenchmark, StlInt32) {...}
BENCHMARK_F(ConcurrentBenchmark, StlInt64) {...}
Вот результат.
-----------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------
ConcurrentBenchmark/Int32 4612777 ns 1081463 ns 645
ConcurrentBenchmark/Int64 6192677 ns 2234226 ns 300
ConcurrentBenchmark/StlInt32 8101856 ns 8101747 ns 86
ConcurrentBenchmark/StlInt64 7958493 ns 7958290 ns 88
Мой вопрос: кажется, что время ЦП совпадает с итерациями Например, CPU * Iterations является константой. Но что говорит нам колонка «Время»? Включает ли это время инициализацию, например, заполнение буферов в памяти?