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
|