"time.h"를 사용하여 벤치마킹하는 방법을 배우기 위해 타이밍 테스트를하고 싶습니다. 하지만 첫 번째 테스트는 항상 더 길다는 것을 알았습니다.
0 1 2 3 4 5 6 7 8 9
time 0.000138
0 1 2 3 4 5 6 7 8 9
time 0.000008
0 1 2 3 4 5 6 7 8 9
time 0.000007
동일한 main () 함수에서 여러 테스트를 수행하려는 경우 결과는 신뢰할 수 없습니다. 위의 출력을 인쇄하는 어리석은 코드가 있습니다.
#include <stdio.h>
#include <time.h>
const int COUNT = 10;
void test() {
clock_t start = clock();
for(int i = 0; i < COUNT; i++) {
printf("%d ", i);
}
printf("\ntime %lf\n", (double)(clock() - start) / (double)CLOCKS_PER_SEC );
}
int main() {
test();
test();
test();
return 0;
}
첫 번째 "테스트"기능을 무시하여이 문제를 해결했습니다. 또한 테스트가 작동하기 전에 정수를 출력하는 첫 번째 "printf"를 작성합니다. 그러나 나는 그것이 적절한 해결책이 아니라고 생각합니다.
CPU에 캐시가 있습니다. 코드와 데이터가 캐시에 없으면 코드를 실행하는 데 더 오래 걸립니다.
성능을 측정 할 때 첫 번째 실행 (또는 처음 몇 번 실행)의 결과를 버리는 것이 표준 관행입니다. "캐시 준비"라고도합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다