首页 > 解决方案 > 数组和 std::vector 的谷歌基准性能显示数组的 cpu 时间 = 0ns?为什么

问题描述

我用谷歌基准测试了数组和向量的性能

关联:

https://quick-bench.com/q/ixWRn2XG8Q1-OnSFP6GXsadsw_g 您可以通过链接查看代码

结果:

在此处输入图像描述 它表明使用数组几乎没有成本,数组比向量快 2900000000 倍 ### 问题为什么会发生这种情况?

我的代码

#include<vector>
#include <vector>
static void int_use_array(benchmark::State& state) {
    for (auto _ : state) {
        int a[200][200];
        for(int i = 0; i < 200; ++i) {
            for(int j = 0; j < 200; ++j) {
                a[i][j] = i * j;
            }
        }
        int t = a[2][89];
    }
}
BENCHMARK(int_use_array);
static void int_use_vector(benchmark::State& state) {
    for (auto _ : state) {
        std::vector<std::vector<int> > vec(200, std::vector<int>(200, 0));
        for (int i = 0; i < 200; ++i) {
            for(int j = 0; j < 200; j++) {
                vec[i][j] = i * j;
            }
         }
        int t = vec[2][98];
    }
}
BENCHMARK(int_use_vector);

标签: c++arraysvectorgoogle-benchmark

解决方案


推荐阅读