VS2010에서 병렬 패턴 라이브러리로 게임을 시작했습니다. 응용 프로그램에서 예상 한 결과를 얻었지만 디버그 버전과 릴리스 버전을 벤치 마크 할 때 다음과 같이 릴리스 버전에서 이상한 실행 시간이 발생합니다. 디버그 버전 : "순차 기간 : 1014" "병렬 기간 : 437" 릴리스 버전 "연속 재생 시간 : 31" "병렬 지속 시간 : 484"디버그 및 릴리스 버전에서 이상한 실행 시간
이 내 응용 프로그램 코드
double DoWork(int workload)
{
double result=0;
for(int i =0 ; i < workload;i++)
{
result +=sqrt((double)i * 4*3) + i* i;
}
return result;
}
vector<double> Seqential()
{
vector<double> results(100);
for(int i = 0 ; i <100 ; i++)
{
results[i] = DoWork(1000000);
}
return results;
}
vector<double> Parallel()
{
vector<double> results(100);
parallel_for(0,(int)100,1,[&results](int i)
{
results[i] = DoWork(1000000);
});
return results;
}
double Sum(const vector<double>& results)
{
double result =0;
for(int i = 0 ; i < results.size();i++)
result += results[i];
return result;
}
int main()
{
DWORD start = GetTickCount();
vector<double> results = Seqential();
DWORD duration = GetTickCount() - start;
cout<<"Sequential Duration : "<<duration <<" Result : " <<Sum(results) << endl;
start = GetTickCount();
results = Parallel();
duration = GetTickCount() - start;
cout<<"Prallel Duration : "<<duration <<" Result : " <<Sum(results) << endl;
system("PAUSE");
return 0;
}
귀하의 정보를 주셔서 감사합니다 지금은 내가 평행 시간의 절반의 순차에있어하지만 i5 프로세서에서 순차적으로보다 거의 4 시간 빠르다는 예외도 내 코드 형식에 대한 귀하의 노트를 말해 –
@ Ma7moudEl - Naggar 일부 i5 프로세서는 2 코어 풀 4 코어와는 다른 4 개의 하이퍼 스레드가 있습니다. 그런 프로세서가 있니? BTW, 위의 측정은 2.5 GHz의 코어 2 쿼드에서 수행되었습니다. –
@ Ma7moudEl-Naggar 코드 서식과 관련하여 코드를 들여 쓰기로 시작해야합니다. 또한 공백을 일관성있게 사용하는 것이 좋습니다 ... –