Google Benchmark пытается сравнить каждого кандидата на одинаковую сумму раз и / или достаточно долго, чтобы получить стабильные результаты.
Этот тест подсчитывает, сколько итераций он фактически выполнил,вместе с точным временем. Гораздо более медленный эталонный тест на итерацию будет выполнять гораздо меньше итераций.
Распечатка - это (рассчитанное) время на одну итерацию и (подсчитанное) итерации функции эталонного теста.
Это может быть на самом делеколичество вызовов на state.KeepRunning()
, но я не знаю этого уровня детализации.
Только к вашему сведению, ваши циклы тестов не возвращают никакого результата или сохраняют его на volatile
послецикл, так что компилятор может легко оптимизировать цикл. Также обратите внимание, что знаковое переполнение - это UB в C, и ваш int
будет определенно переполнен.
(Или Clang все равно может оптимизировать эти циклы сумм в формулу замкнутой формы, основанную на n * (n+1) / 2
Гаусса, но избегая переполнения. )
Бенчмаркинг с отключенной оптимизацией бесполезен;не делай этого.