std::vector<double> C(4);
for(int i = 0; i < 1000;++i)
for(int j = 0; j < 2000; ++j)
{
C[0] = 1.0;
C[1] = 1.0;
C[2] = 1.0;
C[3] = 1.0;
}
比起其他选项,速度更快
for(int i = 0; i < 1000;++i)
for(int j = 0; j < 2000; ++j)
{
std::vector<double> C(4);
C[0] = 1.0;
C[1] = 1.0;
C[2] = 1.0;
C[3] = 1.0;
}
我意识到这是因为在循环中重复创建和实例化了
std::vector
,但我认为这应该被优化掉。
尽可能在循环中保留变量局部是否完全错误?我曾经有这样(也许是错误的)的印象,这能够为编译器提供优化机会。
或者这只适用于POD类型,而不适用于像std::vector
这样的东西。
编辑:我使用 VC++2005(发布模式)和 Windows XP 上的全优化 (/Ox
)。
double C[4];
会更快,因为你正在支付动态内存分配的费用,但实际上并不需要它。 - Brian