Google Benchmark 是 C++ 最常用可靠的微基准测试框架,专为精确测量小段代码执行时间设计,自动处理预热、采样、统计与输出;安装推荐 vcpkg 或源码编译,编写需用 benchmark::State& 参数并循环调用 KeepRunning()。

Google Benchmark 是 C++ 里最常用、最可靠的微基准(microbenchmark)测试框架,专为精确测量小段代码的执行时间而设计。它自动处理预热、多次采样、统计分析和结果输出,比手写 std::chrono 循环靠谱得多。
推荐用 CMake + vcpkg 或直接源码编译:
vcpkg install benchmark,然后在 CMakeLists.txt 中 find_package(benchmark CONFIG REQUIRED)
cmake -G "Ninja" && ninja && ninja install
benchmark 和 pthread(Linux/macOS 必须)每个测试函数必须接受一个 benchmark::State& 参数,并在循环中调用 state.KeepRunning():
#include <benchmark/benchmark.h>
#include <vector>
static void BM_VectorPushBack(benchmark::State& state) {
for (auto _ : state) {
std::vector<int> v;
for (int i = 0; i < state.range(0); ++i) {
v.push_back(i);
}
}
}
BENCHMARK(BM_VectorPushBack)->Range(1<<10, 1<<16); // 测试 1K ~ 64K 元素
BENCHMARK_MAIN(); // 自动生成 main()
关键点:
立即学习“C++免费学习笔记(深入)”;
for (auto _ : state) 是框架控制循环的核心语法,每次迭代对应一次 benchmark 运行state.range(0) 读取命令行传入的参数(如 --benchmark_range=1024)BENCHMARK_MAIN() 自动提供带参数解析的 main 函数,无需自己写真实场景中容易忽略细节,导致结果失真:
benchmark::DoNotOptimize(x) 或 benchmark::ClobberMemory()
state.PauseTiming() / state.ResumeTiming()
BENCHMARK_REGISTER_F + fixture 类,共享 setup/teardown 逻辑--benchmark_format=json --benchmark_out=result.json
编译后直接运行可执行文件,例如:
./benchmarks --benchmark_filter=Vector --benchmark_repetitions=3
典型输出含:
state.SetBytesProcessed())基本上就这些。不复杂但容易忽略 timing 控制和防优化,跑准了才能真的比出快慢。
以上就是c++++ Google Benchmark框架怎么用_c++微基准性能测试【教程】的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号