Clock()은 프로세스 또는 전체 시스템 클럭 카운트를 반환합니까?

Clock()은 프로세스 또는 전체 시스템 클럭 카운트를 반환합니까?

코드 세그먼트가 완료되는 데 걸리는 시간을 계산하려고 합니다. 하지만 프로세스를 실행하는 데 걸리는 시간을 결정하려는 것이 아니라 모든 요소를 ​​고려하는 데 걸리는 시간(예: 프로세스가 중단되는 경우)도 계산하고 싶습니다.

이 작업을 수행하기 위해 Clock()을 사용하고 있습니다. Clock() 시계는 총 시간을 계산합니까, 아니면 실행 시간을 처리합니까?

답변1

당신은 그것에 대해 언급하지 않았으므로 특별히 Linux에 대해 질문하고 있다고 가정합니다.

에서 man 3 clock:

반환되는 값은 사용된 CPU 시간입니다.clock_t의 경우 사용된 초를 얻으려면 CLOCKS_PER_SEC로 나눕니다.

즉, 시계는 프로세서 시간에만 관련됩니다. 벽걸이 시간을 원할 경우 다음을 수행할 수 있습니다.

  • /proc/.../statawk -v RS=\) '{ print $20 }' /proc/.../stat시작 이후 프로세스의 시작 시간(클럭 주기)이 포함된 등가 검사의 시작 시간 필드를 사용합니다 . 그런 다음 현재 가동 시간을 비교하여 sysinfo()프로세스가 시작된 이후 얼마나 많은 시간이 경과했는지 계산할 수 있습니다(물론 귀찮게도 를 나누어 가동 시간을 시계로 변환해야 함 CLK_TCK). 또는,
  • clock_gettime와 함께 사용되지만 CLOCK_MONOTONICAPI는 와 다릅니다 clock. 첫째, clock_gettime비교를 위해 결과를 사용하여 처음에 결과를 명시적으로 호출하고 저장해야 합니다(사용 방법에 따라 이미 이 작업을 수행하고 있을 수도 있음 clock). 또한 를 다시 사용할 수 있더라도 이것이 a time_t이고 가 아니라는 점을 인정해야 합니다 .clock_tCLK_TCK

관련 정보