gpt4 book ai didi

c++ - 在 C++ 中缓慢写入数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:17 27 4
gpt4 key购买 nike

我只是想知道这是否是 C++ 中的预期行为。下面的代码运行时间约为 0.001 毫秒:

for(int l=0;l<100000;l++){
int total=0;
for( int i = 0; i < num_elements; i++)
{
total+=i;
}
}

但是,如果将结果写入数组,执行时间会飙升至 15 毫秒:

int *values=(int*)malloc(sizeof(int)*100000);
for(int l=0;l<100000;l++){
int total=0;
for( unsigned int i = 0; i < num_elements; i++)
{
total+=i;
}
values[l]=total;
}

我明白写入数组需要时间,但时间是否成比例?

大家好

最佳答案

第一个示例可以仅使用 CPU 寄存器来实现。这些可以每秒访问数十亿次。第二个例子使用了太多的内存,它肯定会溢出 L1 和可能的 L2 缓存(取决于 CPU 型号)。那会更慢。尽管如此,15 毫秒/100.000 次写入还是每次写入 1.5 ns - 667 Mhz 有效。那慢。

关于c++ - 在 C++ 中缓慢写入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234039/

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