2010-04-02 3 views
1

동일한 실행 파일의 성능이 크게 달라지는 이유가 무엇인지 궁금합니다. 가끔씩 실행하면 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

당신이 많은 양의 데이터를로드하기 때문입니다 그것은 내가 를 추측 할 사람에게

+1

입력 데이터의 일관성은 어떻게됩니까? – GManNickG

답변

0

문제가 해결되었습니다. 질문에서 업데이 트를 참조하십시오

1

을하는 데 도움이 ... 메모리 관련 문제에 대한 희망으로 나타납니다 저장 장치로부터. 저장 장치에 대해 많은 논쟁이있는 경우 소프트웨어가 로딩을 수행하기 위해 잠시 기다려야하므로 더 느리게 실행됩니다.