동일한 실행 파일의 성능이 크게 달라지는 이유가 무엇인지 궁금합니다. 가끔씩 실행하면 20 초가 걸리고 때로는 110이됩니다. 소스가 MSVC와 함께 표준 모드의 릴리스 모드로 컴파일됩니다. MSVC 릴리스의 다양한 성능 exe
코드
은 여기에 있습니다 : 입력 데이터를 언급하지죄송합니다
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;
}
편집 할 수 있습니다. 벡터 Un 및 Ucur는 값이 0 인 2000 개의 요소로 초기화됩니다. 데이터를 읽거나 쓸 수 없습니다. 콘솔과 상호 작용하지 않습니다. 내가 가끔씩 말하면 콘솔이 열려 있고 다른 응용 프로그램은 실행 중이 아니라 프로세서 제한이 비활성화되어 있음을 의미합니다. 나는 그것이 끝난 후에도 응용 프로그램을 계속 실행합니다. 캐싱 또는 이와 유사한 작업을 수행해야하지만 저수준 작업에는 좋지 않습니다. 내가 변수 주소에서이 함수의 인수를 전환 할 때
UPDATE
문제가 해결되었습니다. 나는 지금 double &time, double &dt, double &end_time
있었다 전에 는 : double time, double dt, double end_time
당신이 많은 양의 데이터를로드하기 때문입니다 그것은 내가 이를 추측 할 사람에게
입력 데이터의 일관성은 어떻게됩니까? – GManNickG