2010-06-24 4 views

답변

6

clock() 함수는 프로세스에서 소비 한 CPU 시간을 측정합니다. 프로세스가 잠자거나 차단되는 동안 증가하지 않습니다.

계속해서 발전하는 고해상도 클록을 원하면 clock_gettime(CLOCK_MONOTONIC, ..)을 사용하십시오.

1

나는 구체적으로 무엇을 묻는 지 명확하지 않습니다. 당신의 프로세스가 사용하고있는 시간을 얻기위한 다른 방법을 원한다면 ITIMER_PROF 대 ITIMER_REAL을 사용하여 getitimer()/setitimer()를 자주 사용합니다. 그러나 나는 약간 기발한 것일 수 있습니다.

1

LWN article "The trouble with TSC" 및 첨부 된 설명에 관심이있을 수 있습니다. gettimeofdayclock_gettime이 올바른 것으로 보이는 반면, 고려해야 할 사항이 많습니다. 성능은 다를 수 있으며, 다중 스레드 또는 다중 프로세스 프로그램의 여러 CPU간에 일관성 문제가있을 수 있습니다. NTP는 클럭 값을 변경할 수 있습니다 (CLOCK_MONOTONIC은 NTP의 영향을받지 않지만 다른 클록 값은 영향을 미칩니다).

귀하의 요구 사항에 맞는지 확인하기 위해 무엇이든지 읽어보십시오. 운이 좋으면 하드웨어 및 라이브러리 플랫폼이 고정되어 있거나 부정확하거나 부정확 할 수 있습니다.

+1

'CLOCK_MONOTONIC'은 항상 올라갈 것입니다. (최악의 경우 여전히 멈추게 될 것입니다.) 리눅스와 관련이없고 2.6.28보다 새로운 커널이 필요하다면 newish glibc를 사용하면'CLOCK_MONOTONIC_RAW'를 사용할 수 있습니다; NTP는 영향을 미치지 않습니다. (나는 glibc 버전을 정의 할 필요가 있을지 모르겠지만) – Spudd86

관련 문제