gpt4 book ai didi

c++ - 使用谷歌基准测试重现 vector 插入的性能结果

转载 作者:行者123 更新时间:2023-12-05 05:29:53 26 4
gpt4 key购买 nike

最近看到关于在std::liststd::vector前面插入元素的结果如下:

  • 对于std::list,时间是线性的
  • 对于std::vector时间多项式
  • 但是对于少量元素 (<800) std::vector 胜过列表

https://github.com/CppCon/CppCon2022/blob/main/Presentations/Refresher-on-Containers-Algorithms-and-Performance.pdf

来源:https://github.com/CppCon/CppCon2022/blob/main/Presentations/Refresher-on-Containers-Algorithms-and-Performance.pdf

我尝试用谷歌基准测试重现这些结果。

#include <benchmark/benchmark.h>

static void bm_vec(benchmark::State &state) {
for (auto _ : state)
{
state.PauseTiming();
std::vector<int> v ;
benchmark::DoNotOptimize(v.data());
state.ResumeTiming();
for (int i = 0; i < state.range(0); i++)
{
v.insert(v.begin(), 1);
}
benchmark::ClobberMemory();
}
}

BENCHMARK(bm_vec)->DenseRange(10,2000,10);

static void bm_list(benchmark::State &state) {

for (auto _ : state)
{
state.PauseTiming();
std::list<int> v ;
benchmark::DoNotOptimize(v.front());
state.ResumeTiming();
for (int i = 0; i < state.range(0); i++)
{
v.insert(v.begin(), 1);
}

}
}
BENCHMARK(bm_list)->DenseRange(10,2000,10);

BENCHMARK_MAIN();

但是我的结果并没有重现预期的效果: very bad results

有谁知道我需要改进什么才能获得理想的结果?

最佳答案

设置 O3( add_compile_options(-O3) ) 解决了这个问题。 enter image description here

关于c++ - 使用谷歌基准测试重现 vector 插入的性能结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74825619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com