[c] C에서 최고의 타이밍 방법?

고해상도와 이식성을 갖춘 코드 섹션의 시간을 측정하는 가장 좋은 방법은 무엇입니까?

크로스 플랫폼 솔루션이있는 표준 라이브러리가 있습니까?



답변

나는 이것이 효과가 있다고 생각한다.


답변

gettimeofday ()는 아마도 당신이 원하는 것을 할 것입니다.

Intel 하드웨어를 사용하는 경우 CPU 실시간 명령 카운터를 읽는 방법은 다음과 같습니다. 프로세서가 부팅 된 이후 실행 된 CPU주기 수를 알려줍니다. 성능 측정을 위해 얻을 수있는 가장 세밀하고 가장 낮은 오버 헤드 카운터 일 것입니다.

이것은 CPU 사이클 수입니다. 리눅스에서는 / proc / cpuinfo에서 CPU 속도를 구하고 나눌 수 있습니다. 이것을 double로 변환하는 것은 매우 편리합니다.

내 상자에서 이것을 실행하면

11867927879484732
11867927879692217
printf를 호출하는 데 이렇게 오래 걸렸습니다. 207485

다음 은 수많은 세부 정보를 제공 하는 인텔 개발자 가이드 입니다.


답변

gettimeofday 는 시스템 시계의 해상도 내에서 마이크로 초 단위로 정확한 시간 을 반환합니다. SourceForge 에서 High Res Timers 프로젝트 를 확인하고 싶을 수도 있습니다 .


답변


답변

CPU 시간을 원하지 않는 경우 찾고있는 것이 timeval 구조체라고 생각합니다.

실행 시간을 계산하기 위해 아래를 사용합니다.


답변

높은 해상도는 상대적입니다 … 저는 예제를보고 있었고 대부분 밀리 초를 지원합니다. 그러나 저에게는 마이크로 초를 측정하는 것이 중요합니다. 나는 마이크로 초 동안 플랫폼 독립 솔루션을 보지 못했고 아래 코드와 같은 것이 유용 할 것이라고 생각했습니다. 나는 당분간 윈도우에서만 타이밍을 잡았으며 AIX / Linux에서 동일한 작업을 수행 할 때 gettimeofday () 구현을 추가 할 가능성이 큽니다.

용법:


답변