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 (режим выпуска) с полной оптимизацией (/Ox
) в Windows XP