谷歌Benchmark测试框架
Benchmark是谷歌开发的C++性能测试框架。本章将简单介绍其安装使用。
安装
参考博客如下:https://www.cnblogs.com/apoce...
> git clone https://github.com/google/benchmark.git
> cd benchmark
> git clone https://github.com/google/googletest.git googletest
> mkdir -p build
> cd build cmake -DCMAKE_BUILD_TYPE=RELEASE ../benchmark
> make -j4
> sudo make install
# 如果想install到其他目录,需要自己设置CMAKE_INSTALL_PREFIX
引入benchmark
在最上层的CMakeLists.txt
文件中添加链接库。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
# benchmark依赖thread线程库
add_library(benchmark STATIC IMPORTED)
set_property(TARGET benchmark PROPERTY IMPORTED_LOCATION /usr/local/lib/libbenchmark.a)
如果我们需要在demo.cpp中引入benchmark,需要添加依赖:
add_executable(demo demo.cpp)
target_link_libraries(demo
benchmark
)
install(TARGETS
demo
DESTINATION "bin/"
)
Demo
在demo.cpp文件中
#include
#include
#include
constexpr int len = 6;
std::vector vec{1, 2, 3, 4, 5, 6};
std::array array{1, 2, 3, 4, 5, 6};
// benchmark::State &state用于维护测试上下文信息,以及控制迭代次数
static void vector_test(benchmark::State &state)
{
for (auto _ : state)
{
vec[0];
vec[1];
vec[2];
vec[3];
vec[4];
vec[5];
}
}
static void array_test(benchmark::State &state)
{
for (auto _ : state)
{
array[0];
array[1];
array[2];
array[3];
array[4];
array[5];
}
}
// 注册测试用例
BENCHMARK(vector_test);
BENCHMARK(array_test);
// benchmark的主函数
BENCHMARK_MAIN();
编译过后,运行make install
,我们可以在$CMAKE_INSTALL_PREFIX/bin
中找到可执行文件demo,然后运行./demo
结果格式如下:
2021-12-02T02:13:36+08:00
Running ./demo
Run on (16 X 1896.37 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x8)
L1 Instruction 32 KiB (x8)
L2 Unified 512 KiB (x8)
L3 Unified 16384 KiB (x1)
Load Average: 0.43, 0.25, 0.10
------------------------------------------------------
Benchmark Time CPU Iterations
------------------------------------------------------
vector_test 6.81 ns 6.81 ns 102373755
array_test 13.6 ns 13.6 ns 51227934
Time表示平均每次的运行时间,CPU为平均CPU运行时间。