gpt4 book ai didi

c++ - vector 初始化比数组慢......为什么?

转载 作者:可可西里 更新时间:2023-11-01 16:54:42 26 4
gpt4 key购买 nike

我尝试了两件事:(下面的伪代码)

int arr[10000];
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}

vector<int> arr(10000);
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}

我运行了这两个程序并使用“time”shell 命令对其计时。程序 1 运行 5 秒,程序 2 运行 30 秒。我在打开编译器优化的情况下运行了这两个程序,并且这两个程序的运行时间大致相同(0.38 秒)。我对这些结果感到困惑。有人可以向我解释为什么会这样吗?

谢谢!

最佳答案

对于模板,下标是用 operator[] 完成的。在关闭优化的情况下,这通常会作为真正的函数调用生成,从而为像下标到数组这样简单的事情增加很多开销。当您打开优化时,它会内联生成,从而消除了开销。

关于c++ - vector 初始化比数组慢......为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1614988/

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