Понимание результатов Google Benchmark - PullRequest
1 голос
/ 21 апреля 2020

Я делаю тест производительности различных реализаций таблицы 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 является константой. Но что говорит нам колонка «Время»? Включает ли это время инициализацию, например, заполнение буферов в памяти?

...