Тест Google: утверждение `has_range_x_ ‘не удалось

В проекте я начинаю использовать Google / Benchmark из https://github.com/google/benchmark.git тег v1.0.0.

Я запускаю очень простой тест

#include <benchmark/benchmark.h>
#include <cstring>

static void BM_memcpy(benchmark::State& state) {
char* src = new char[state.range_x()]; char* dst = new char[state.range_x()];
memset(src, 'x', state.range_x());
while (state.KeepRunning())
memcpy(dst, src, state.range_x());
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(state.range_x()));
delete[] src;
delete[] dst;
}
BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10);

// Register the function as a benchmark
BENCHMARK(BM_memcpy);

BENCHMARK_MAIN();

но я получаю ошибку

./bench/simple-benchmark
Run on (8 X 4000 MHz CPU s)
2016-08-02 18:22:30
Benchmark               Time           CPU Iterations
-----------------------------------------------------
BM_memcpy/8             9 ns          9 ns   79545455       877MB/s
BM_memcpy/64            9 ns          9 ns   56451613   6.67615GB/s
BM_memcpy/512          21 ns         21 ns   33018868   23.0185GB/s
BM_memcpy/1024         30 ns         29 ns   23648649   32.4039GB/s
BM_memcpy/8k          516 ns        514 ns    1346154   14.8415GB/s
simple-idl-benchmark: /usr/local/include/benchmark/benchmark_api.h:417: int benchmark::State::range_x() const: Assertion `has_range_x_' failed.

Я пробовал мастер и старые теги, но я всегда получаю это утверждение. Я использую gcc 5.4.0 в debian / testing как для библиотеки тестов производительности, так и для исполняемого файла simple-benchmark.

Мне кажется, что он не может определить конец списка аргументов и утверждает. Но что не так? Как это предотвратить?

1

Решение

Вы регистрируете бенчмарк дважды (звонки на BENCHMARK) но во второй раз вы не предоставите Arg, То есть вы вызываете это без установки диапазона, как утверждает утверждение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]