Мне любопытно, что может быть причиной сильно меняющейся производительности одного и того же исполняемого файла.
Иногда я запускаю его, и это занимает 20 секунд, а иногда - 110.
Исходный код скомпилирован с MSVC в режиме Release со стандартными параметрами.
Код здесь:
vector<double> Un;
vector<double> Ucur;
double *pUn, *pUcur;
...
// time marching
for (old_time=time-logfreq, time+=dt; time <= end_time; time+=dt)
{
for (i=1, j=Un.size()-1, pUn=&Un[1], pUcur=&Ucur[1]; i < j; ++i, ++pUn, ++pUcur)
{
*pUcur = (*pUn)*(1.0-0.5*alpha*( *(pUn+1) - *(pUn-1) ));
}
Ucur[0] = (Un[0])*(1.0-0.5*alpha*( Un[1] - Un[j] ));
Ucur[j] = (Un[j])*(1.0-0.5*alpha*( Un[0] - Un[j-1] ));
Un = Ucur;
}
EDIT
Извините, не говоря уже о входных данных.
Векторы Un и Ucur инициализируются до 2000 элементов со значением 0.
Нет данных для чтения / записи. Нет взаимодействия с консолью.
Когда я иногда говорю, что я запускаю, это означает, что у меня открыта консоль, другие приложения не запущены, регулирование процессора отключено. Я продолжаю выполнять приложение после его завершения.
Я думаю, это связано с кэшированием или чем-то в этом роде, но я не очень хорош в низкоуровневых вещах.