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

标签 c++ optimization vector performance

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

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/

相关文章:

c++ - 远程主机不编译,但它应该

c++ - 错误 : 'memcpy_s' was not declared in this scope in gSOAP

c++ - 正确地完成了一个类似竞争的问题,但需要帮助来提高其效率

java - 2d platformer - 只移动当前在屏幕上的对象?

c# - 如果我有一个以非只读结构作为成员的 c# 只读结构,编译器是否会创建带有 in 参数的防御性副本

c++ - 按位置引用函数的参数?

c++ - 不需要有 VAO?

c++ - push_back 来自同一 vector 的元素是否安全?

c++ - : Expected constructor, 析构函数错误, '<' token 之前的类型转换

c++ - 在 std::vector of std::pair 中查找最小值和最大值