표준 C 함수는 첫 번째 호출에서 느립니다.이 문제를 올바르게 해결하는 방법은 무엇입니까?

Ploumploum

"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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관