[python] 파이썬의 time.clock () 대 time.time () 정확도?

파이썬에서 타이밍에 사용하는 것이 더 낫습니까? time.clock () 또는 time.time ()? 어느 것이 더 정확한가?

예를 들면 다음과 같습니다.

start = time.clock()
... do something
elapsed = (time.clock() - start)

vs.

start = time.time()
... do something
elapsed = (time.time() - start)



답변

3.3로, time.clock () 되지 않습니다 , 사용하도록 제안 것 time.process_time () 또는 time.perf_counter () 대신합니다.

이전의 2.7에서는 시간 모듈 문서 에 따르면 :

time.clock ()

유닉스에서는 현재 프로세서 시간을 부동 소수점 숫자 (초)로 반환합니다. “프로세서 시간”의 의미에 대한 정확성과 정의는 같은 이름의 C 함수의 정밀도에 달려 있지만, 어쨌든 이것은 파이썬 또는 타이밍 알고리즘을 벤치마킹하는 데 사용하는 함수입니다.

Windows에서이 함수는 Win32 함수 QueryPerformanceCounter ()를 기반으로이 함수에 대한 첫 번째 호출 이후 경과 된 벽시계 초를 부동 소수점 숫자로 리턴합니다. 해상도는 일반적으로 1 마이크로 초보다 낫습니다.

또한, 코드 스 니펫 벤치마킹을위한 timeit 모듈이 있습니다.


답변

짧은 대답은 : 대부분의 시간 time.clock()이 더 나을 것입니다. 그러나 일부 하드웨어 (예 : GPU에 넣은 알고리즘)의 타이밍 time.clock()을 지정하는 경우이 시간을 없애고 time.time()유일한 해결책입니다.

참고 : 어떤 방법을 사용하든 타이밍은 제어 할 수없는 요인 (프로세스 전환시기, 빈도 등)에 따라 달라집니다.이 경우에는 나빠지지만와 함께 time.time()존재 time.clock()하므로 타이밍 테스트를 한 번만 실행해서는 안됩니다. 항상 일련의 테스트를 수행하고 시간의 평균 / 변동을 살펴보십시오.


답변

기타 : 재 대답 한 time.time()time.clock().

그러나 벤치마킹 / 프로파일 링 목적으로 코드 블록의 실행을 타이밍하는 경우 timeit모듈을 살펴 봐야 합니다 .


답변

명심해야 할 사항 : 시스템 시간 변경은에 영향을 time.time()주지만 그렇지 않습니다 time.clock().

자동 테스트 실행을 제어해야했습니다. 테스트 케이스의 한 단계가 주어진 시간보다 오래 걸리면 해당 TC는 다음 단계로 진행되지 않았습니다.

그러나 때때로 테스트 할 응용 프로그램의 스케줄러 모듈을 확인하기 위해 시스템 시간을 변경하는 단계가 필요했기 때문에 나중에 시스템 시간을 몇 시간 설정 한 후 TC 시간 초과가 만료되어 테스트 사례가 중단되었습니다. 나는 전환했다 time.time()time.clock()적절하게이 문제를 처리하는.


답변

clock() -> 부동 소수점 수

프로세스 시작 이후 또는에 처음 호출 한 이후의 CPU 시간 또는 실시간을 반환합니다 clock(). 이것은 시스템 기록만큼이나 정밀합니다.

time() -> 부동 소수점 수

Epoch 이후 현재 시간을 초 단위로 반환하십시오. 시스템 시계가 제공하는 경우 1 초의 분수가 표시 될 수 있습니다.

time()운영 체제는 프로세스 실행 시간을 시스템 시간 (예 : 실제 시간)을 저장하는 정밀도로 저장하지 않기 때문에 일반적 으로 더 정확합니다.


답변

당신이 관심있는 것에 달려 있습니다. 벽면 시계의 시간과 같이 WALL TIME을 의미하는 경우 time.clock ()은 CPU 시간을 관리 할 수 ​​있으므로 정확도를 제공하지 않습니다.


답변

time()clock()Linux 보다 정확도가 높습니다 . clock()정밀도는 10ms 미만입니다. 하지만이 time()지사 정밀도를 제공합니다. 내 테스트는 CentOS 6.4, python 2.6에 있습니다.

using time():

1 requests, response time: 14.1749382019 ms
2 requests, response time: 8.01301002502 ms
3 requests, response time: 8.01491737366 ms
4 requests, response time: 8.41021537781 ms
5 requests, response time: 8.38804244995 ms

using clock():

1 requests, response time: 10.0 ms
2 requests, response time: 0.0 ms
3 requests, response time: 0.0 ms
4 requests, response time: 10.0 ms
5 requests, response time: 0.0 ms
6 requests, response time: 0.0 ms
7 requests, response time: 0.0 ms
8 requests, response time: 0.0 ms