1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
import time
import platform
from rpython.rlib import rtimer
from rpython.rtyper.test.test_llinterp import interpret
from rpython.translator.c.test.test_genc import compile
class TestTimer(object):
@staticmethod
def timer():
t1 = rtimer.read_timestamp()
start = time.time()
while time.time() - start < 0.1:
# busy wait
pass
t2 = rtimer.read_timestamp()
return t2 - t1
def test_direct(self):
diff = self.timer()
# We're counting ticks, verify they look correct
assert diff > 1000
def test_annotation(self):
diff = interpret(self.timer, [])
assert diff > 1000
def test_compile_c(self):
function = compile(self.timer, [])
diff = function()
assert diff > 1000
class TestGetUnit(object):
@staticmethod
def get_unit():
return rtimer.get_timestamp_unit()
def test_direct(self):
unit = self.get_unit()
assert unit == rtimer.UNIT_NS
def test_annotation(self):
unit = interpret(self.get_unit, [])
assert unit == rtimer.UNIT_NS
def test_compile_c(self):
function = compile(self.get_unit, [])
unit = function()
if platform.processor() in ('x86', 'x86_64'):
assert unit == rtimer.UNIT_TSC
else:
assert unit in (rtimer.UNIT_TSC,
rtimer.UNIT_NS,
rtimer.UNIT_QUERY_PERFORMANCE_COUNTER)
|