| #!/usr/bin/env python | |
| """ clockres - calculates the resolution in seconds of a given timer. | |
| Copyright (c) 2006, Marc-Andre Lemburg (mal@egenix.com). See the | |
| documentation for further information on copyrights, or contact | |
| the author. All Rights Reserved. | |
| """ | |
| import time | |
| TEST_TIME = 1.0 | |
| def clockres(timer): | |
| d = {} | |
| wallclock = time.time | |
| start = wallclock() | |
| stop = wallclock() + TEST_TIME | |
| spin_loops = range(1000) | |
| while 1: | |
| now = wallclock() | |
| if now >= stop: | |
| break | |
| for i in spin_loops: | |
| d[timer()] = 1 | |
| values = d.keys() | |
| values.sort() | |
| min_diff = TEST_TIME | |
| for i in range(len(values) - 1): | |
| diff = values[i+1] - values[i] | |
| if diff < min_diff: | |
| min_diff = diff | |
| return min_diff | |
| if __name__ == '__main__': | |
| print 'Clock resolution of various timer implementations:' | |
| print 'time.clock: %10.3fus' % (clockres(time.clock) * 1e6) | |
| print 'time.time: %10.3fus' % (clockres(time.time) * 1e6) | |
| try: | |
| import systimes | |
| print 'systimes.processtime: %10.3fus' % (clockres(systimes.processtime) * 1e6) | |
| except ImportError: | |
| pass |