1
우리는 다음 아키텍처의 작은 C++ 프로젝트를 보유하고 있습니다.알고리즘과 미리 컴파일 된 참조 구현의 속도 비율은 컴퓨터마다 다릅니다.
이 두은 DLL로 컴파일했다 :
- 알고리즘
- 결과의 정확성을 확인하고, 실행 속도를 측정하는 알고리즘 테스터.
그런 다음 다른 사람이 동일한 알고리즘을 구현했습니다.
- 알고리즘의 구현에 모두 테스터를 호출하고 그 실행 속도 측정 :
main()
기능이 수행. 이 작업은 여러 번 수행되므로 평균을 나중에 취할 수 있습니다. - 그들 사이의 속도 비율 (측정 된 시간/측정 된 기준 시간)을 계산하십시오. 이를 점수라고합니다.
다른 컴퓨터에서 동일한 코드와 DLL을 실행하면 매우 다른 속도 비율이 반환되는 것으로 나타났습니다. 한 컴퓨터에서 구현은 6.4 점을 받았고 동일한 구현은 다른 컴퓨터에서 2.8 점을 기록했습니다. 어떻게 그럴 수 있니?
"미리 컴파일 된 참조 구현 대 알고리즘의 속도 비율은 컴퓨터에 걸쳐 다르다"- 그래, 그 프로그래머가 아닌 "실제 생활"부르는. –
왜 비율이 (대략) 같을 것으로 예상합니까? – dyp
컴퓨터는 모든 종류의 다소 미묘한 차이가 있습니다.예를 들어 기본 알고리즘 A와 추가 메모리를 요구하는보다 광범위한 캐싱 알고리즘 B를 고려하십시오. 시스템 1에서는 사용 가능한 RAM에 모두 적합하고 B는 빠르지 만 시스템 2 알고리즘 B에서는 스와핑을 시작하고 크롤링 속도가 느려짐 – doynax