我有一个类似的代码:
...
void benchMark(benchmark::State& state){
maxCapacity = state.range(0);
// set up some stuff
for (auto _ : state){
// time this code
}
}
BENCHMARK(benchMark)->DenseRange(2, 10, 1);
BENCHMARK_MAIN();
我想将其更改为:
...
void benchMark(benchmark::State& state){
maxCapacity = state.range(0);
// set up some stuff
for (auto _ : state){
// time this code
}
}
int main(){
BENCHMARK(benchMark)->DenseRange(2, 10, 1);
}
我这样做只是为了以后可以为代码提供命令行参数支持。现在这段代码编译成功,但我根本没有得到任何输出。我猜代码甚至没有运行。第一个代码大约需要 5 分钟才能完成,但第二个代码几乎立即完成执行。我究竟做错了什么?
任何帮助都会很棒。谢谢..
编辑:
由于我不能分享完整的代码,这里有一个最小可重现的例子:
#include <iostream>
#include <benchmark/benchmark.h>
using namespace std;
void pointQuery(int maxCapacity){
long sum = 0;
for(int i=0; i<100000*maxCapacity; i++){
for(int j=0; j<100000*maxCapacity; j++)
sum--;
sum+=i;
}
cout<<sum<<endl;
}
void benchMark(benchmark::State& state){
int maxCapacity = state.range(0);
for (auto _ : state)
pointQuery(maxCapacity);
}
BENCHMARK(benchMark)->DenseRange(2, 10, 1);
BENCHMARK_MAIN();
// int main(){
// BENCHMARK(benchMark)->DenseRange(2, 10, 1);
// }