40 lines
939 B
Python
40 lines
939 B
Python
|
from time import time as timeout_timer
|
||
|
|
||
|
from .compat import XRANGE
|
||
|
|
||
|
try:
|
||
|
from __pypy__.time import clock_gettime
|
||
|
from __pypy__.time import CLOCK_MONOTONIC
|
||
|
|
||
|
def monotonic():
|
||
|
return clock_gettime(CLOCK_MONOTONIC)
|
||
|
except ImportError:
|
||
|
from timeit import default_timer
|
||
|
else:
|
||
|
default_timer = monotonic
|
||
|
|
||
|
|
||
|
def compute_timer_precision(timer):
|
||
|
precision = None
|
||
|
points = 0
|
||
|
timeout = timeout_timer() + 1.0
|
||
|
previous = timer()
|
||
|
while timeout_timer() < timeout or points < 5:
|
||
|
for _ in XRANGE(10):
|
||
|
t1 = timer()
|
||
|
t2 = timer()
|
||
|
dt = t2 - t1
|
||
|
if 0 < dt:
|
||
|
break
|
||
|
else:
|
||
|
dt = t2 - previous
|
||
|
if dt <= 0.0:
|
||
|
continue
|
||
|
if precision is not None:
|
||
|
precision = min(precision, dt)
|
||
|
else:
|
||
|
precision = dt
|
||
|
points += 1
|
||
|
previous = timer()
|
||
|
return precision
|