c++ - 谷歌基准排序算法
问题描述
我想使用 Google Benchmark 对各种排序算法进行基准测试。如果我使用
static void StdSort(benchmark::State& state) {
auto v = generate_random_vector(state.range(0));
for (auto _ : state)
std::sort(std::begin(v), std::end(v));
}
BENCHMARK(StdSort)->Arg(10)->Arg(1000)->Arg(1'000'000);
大多数情况下,我最终都会对预先排序的向量进行排序。我在手册中读到我可以使用手动计时来仅对我关心的部分进行基准测试:
static void StdSort(benchmark::State& state) {
auto v = generate_random_vector(state.range(0));
std::default_random_engine gen;
for (auto _ : state) {
auto start = std::chrono::high_resolution_clock::now();
std::sort(std::begin(v), std::end(v));
auto end = std::chrono::high_resolution_clock::now();
auto elapsed_seconds =
std::chrono::duration_cast<std::chrono::duration<double>>(end - start);
state.SetIterationTime(elapsed_seconds.count());
std::shuffle(std::begin(v), std::end(v), gen);
}
}
BENCHMARK(StdSort)->Arg(10)->Arg(1000)->Arg(1'000'000)->UseManualTime();
这是使用 Google Benchmark 对排序算法进行基准测试的正确方法吗?有更好的方法吗?
解决方案
推荐阅读
- c# - 如何为 iOS 推送通知添加标题?
- wordpress - 从 woocommerce 客户端对象获取数据
- php - 如何计算php文件中的行数
- linux - VBoxManage:错误:VERR_PROC_ELEVATION_REQUIRED(VirtualBox guestcontrol 执行)
- r - 如何根据连续序列过滤满足条件的行?
- reactjs - 使用带有 React 和远程数据的材料表找不到搜索结果时如何处理
- ios - 手势识别器和触摸开始用于 Swift 中的视图
- spring-boot - Spring Boot 测试第二次尝试初始化 cache2k 并失败
- php - PayPal v1 API:付款执行步骤出现 404 错误
- javascript - 如何将道具传递给作为值传递的组件