可运行文件内容:
static void benchmark_slamopttest(benchmark::State& state)
{
SlamOptBoundaries slamtest(15, 4, 4, "/home/usrname/slamtest/CameraRoadFrame", "/home/usrname/slamtest/result.json");
size_t index = state.range(0);
for(auto _: state)
{
slamtest.SaveSameBoundaries(index);
}
}
BENCHMARK(benchmark_slamopttest)->Arg(10);
BENCHMARK_MAIN();
测试函数1:
void SlamOptBoundaries::SaveSameBoundaries(size_t const index_b)
{
VecLocalBoundary vec_same_boundary_l;
size_t index_bl = index_b;
for (; index_bl < vec_boundaries_in_frames_.size(); index_bl += b_)
{
// for(int i = 0; i < 10; ++i)
// {
// int j = i;
// }
if(vec_boundaries_in_frames_[index_bl].size() == 1)
{
continue;
}
vec_same_boundary_l.push_back(vec_boundaries_in_frames_[index_bl]);
}
}
测试函数2:
void SlamOptBoundaries::SaveSameBoundaries(size_t const index_b)
{
VecLocalBoundary vec_same_boundary_l;
size_t index_bl = index_b;
for (; index_bl < vec_boundaries_in_frames_.size(); index_bl += b_)
{
for(int i = 0; i < 10; ++i)
{
int j = i;
}
if(vec_boundaries_in_frames_[index_bl].size() == 1)
{
continue;
}
vec_same_boundary_l.push_back(vec_boundaries_in_frames_[index_bl]);
}
}
测试结果
测试函数1:
2022-01-25T16:13:26+08:00
Running ./run
Run on (16 X 4800 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x8)
L1 Instruction 32 KiB (x8)
L2 Unified 256 KiB (x8)
L3 Unified 16384 KiB (x1)
Load Average: 0.28, 0.47, 0.51
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
***WARNING*** Library was built as DEBUG. Timings may be affected.
-------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------
benchmark_slamopttest/50 152 ns 152 ns 4207340
152ns内执行了4207340次,平均1ns执行27679次。
测试函数2:
2022-01-25T16:14:00+08:00
Running ./run
Run on (16 X 4800 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x8)
L1 Instruction 32 KiB (x8)
L2 Unified 256 KiB (x8)
L3 Unified 16384 KiB (x1)
Load Average: 0.21, 0.43, 0.50
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
***WARNING*** Library was built as DEBUG. Timings may be affected.
-------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------
benchmark_slamopttest/50 151 ns 151 ns 4321895
151ns内执行了4321895次,平均1ns执行28621次。
结论
函数1性能更好,虽然结果肉眼可见。