%EC%9D%80%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EB%98%90%EB%8A%94%20%EC%A0%84%EC%B2%B4%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%ED%81%B4%EB%9F%AD%20%EC%B9%B4%EC%9A%B4%ED%8A%B8%EB%A5%BC%20%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
코드 세그먼트가 완료되는 데 걸리는 시간을 계산하려고 합니다. 하지만 프로세스를 실행하는 데 걸리는 시간을 결정하려는 것이 아니라 모든 요소를 고려하는 데 걸리는 시간(예: 프로세스가 중단되는 경우)도 계산하고 싶습니다.
이 작업을 수행하기 위해 Clock()을 사용하고 있습니다. Clock() 시계는 총 시간을 계산합니까, 아니면 실행 시간을 처리합니까?
답변1
당신은 그것에 대해 언급하지 않았으므로 특별히 Linux에 대해 질문하고 있다고 가정합니다.
에서 man 3 clock
:
반환되는 값은 사용된 CPU 시간입니다.clock_t의 경우 사용된 초를 얻으려면 CLOCKS_PER_SEC로 나눕니다.
즉, 시계는 프로세서 시간에만 관련됩니다. 벽걸이 시간을 원할 경우 다음을 수행할 수 있습니다.
/proc/.../stat
awk -v RS=\) '{ print $20 }' /proc/.../stat
시작 이후 프로세스의 시작 시간(클럭 주기)이 포함된 등가 검사의 시작 시간 필드를 사용합니다 . 그런 다음 현재 가동 시간을 비교하여sysinfo()
프로세스가 시작된 이후 얼마나 많은 시간이 경과했는지 계산할 수 있습니다(물론 귀찮게도 를 나누어 가동 시간을 시계로 변환해야 함CLK_TCK
). 또는,clock_gettime
와 함께 사용되지만CLOCK_MONOTONIC
API는 와 다릅니다clock
. 첫째,clock_gettime
비교를 위해 결과를 사용하여 처음에 결과를 명시적으로 호출하고 저장해야 합니다(사용 방법에 따라 이미 이 작업을 수행하고 있을 수도 있음clock
). 또한 를 다시 사용할 수 있더라도 이것이 atime_t
이고 가 아니라는 점을 인정해야 합니다 .clock_t
CLK_TCK