2014-11-09 2 views
-1

기능을 실행하는 데 필요한 시간을 측정하는 방법이 가장 좋은 것으로 생각됩니다. 그냥 호기심. 감사합니다. .함수 벤치마킹의 올바른 방법이 있습니까?

+1

벤치마킹 코드를 추가하면 코드의 성능 특성이 변경됩니다. 특히 함수가'gettimeofday'보다 빠르다면. 어셈블리를 항상 확인하여 타이밍이 맞는지 타이밍을 세우는 지 확인하십시오. – Barry

답변

1

rdtsc();를 사용해 볼 수 있습니다. 정확하고, 아마도 가장 빠르며 크로스 플랫폼 (x86 아키텍처에만 해당)입니다. 예를 들어 Windows의 경우

#include <intrin.h> 
uint64_t rdtsc() 
{ 
return __rdtsc(); 
} 
+0

정확하지 않은 경우 (정확하게 직렬화하지 않는 한), 플랫폼 간 (모든 것이 x86이 아님)이 아니라 일반적으로 매우 문제가 있습니다. – Leeor

+0

맞습니다. 직렬화에 매우 중요합니다. CPU 어피 니티와 함께 ​​사용하는 것이 더 좋고 모든 전원 관리가 꺼져있는 것이 좋습니다. 왜 그런 생각을 했습니까? :) – Alex

+0

CPU가 명령 블록을 사용하여 CPU를 다시 정렬하지 못하게하는 직렬화를 의미합니다. 측정 된 섹션 또는 그것의 밖으로. 즉, 컴파일러에서 발생하는 모든 이동에 추가됩니다. – Leeor

관련 문제