#!/usr/bin/python
import time, numpy, sys

# test clock tick resolution
# Ubuntu:            1.0e-6 s 
# Windows 7:         15.600e-3 s
# Windows 7 minimum: 1.00e-3 s

def resolutionTest(n=100):
	resolution = []
	for i in range(n):
		t1 = t0 = time.time()
		while t1 == t0:
			t1 = time.time()
		#print "time resolution: {} s".format(t1-t0)
		resolution.append(t1-t0)
	return numpy.mean(resolution)

print "time resolution: {} s".format(resolutionTest())

if sys.platform == "win32":
	from ctypes import *
	from ctypes.wintypes import DWORD
	class TIMECAPS(Structure):
			_fields_ = [("wPeriodMin",c_uint),
									("wPeriodMax",c_uint)
									]

	caps = TIMECAPS()
	windll.winmm.timeGetDevCaps(byref(caps), sizeof(caps))

	print "Max resolution: %s s, Min resolution: %s s" % (caps.wPeriodMax*1e-3, caps.wPeriodMin*1e-3)
	windll.winmm.timeBeginPeriod(caps.wPeriodMin) # set resolution in ms
	print "minimum time resolution: {} s".format(resolutionTest(1000))
	windll.winmm.timeEndPeriod(caps.wPeriodMin)




