数组 – C clang数组比clang向量和gcc向量和数组快得多

下面的代码显示了我的测试用例.我用clang –std = c 11 -O2和g –std = c 11 -O2编译了两者.

long long *ary = new long long[100000000]();
for (long long i = 0; i < 100000000; ++i)
    ary[i] = i;
std::vector<long long> vec(100000000, 0);
for (long long i = 0; i < 100000000; ++i)
    vec[i] = i;

对于我来说,我只进行了初始化测试,然后是初始化和for循环.结果如下:

GCC:

>仅限阵列初始化:0.182s
>数组初始化和for循环:0.250s
>仅矢量初始化:0.169s
>向量初始化和for循环:0.252

铛:

>仅数组初始化:0.004s
>数组初始化和for循环:0.004s
>仅矢量初始化:0.150
>矢量初始化和for循环:0.240s

gcc结果与传统认为向量与数组一样快.而且,矢量的clang和gcc结果非常一致.然而,铿锵声的结果是荒谬的,阵列表现得相当快.任何人都知道为什么会这样?

最佳答案
25倍的加速会告诉您代码已经过优化.由于您的代码不会显示任何内容,因此可以删除它.您的基准无效.

转载注明原文:数组 – C clang数组比clang向量和gcc向量和数组快得多 - 代码日志