STINNER Victor <victor.stin...@gmail.com> added the comment: Patch version 3:
- fix compilation on non-Linux (e.g. on FreeBSD and OpenBSD) - time.monotonic() uses GetTickCount/GetTickCount64 on Windows - clock_getres() fills the accuracy field instead of the resolution field of time.get_clock_info() Clock information on different operating systems. Linux (Fedora 16) on x86_64: >>> pprint.pprint(time.get_clock_info('clock')) {'accuracy': 1e-06, 'function': 'clock()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 1e-06} >>> pprint.pprint(time.get_clock_info('highres')) {'accuracy': 1e-09, 'function': 'clock_gettime(CLOCK_MONOTONIC_RAW)', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('monotonic')) {'accuracy': 1e-09, 'function': 'clock_gettime(CLOCK_MONOTONIC_RAW)', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('time')) {'accuracy': 1e-09, 'function': 'clock_gettime(CLOCK_REALTIME)', 'is_adjusted': True, 'is_monotonic': False, 'resolution': 1e-09} FreeBSD 8.2 on x86_64: >>> pprint.pprint(time.get_clock_info('clock')) {'accuracy': 0.0078125, 'function': 'clock()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 0.0078125} >>> pprint.pprint(time.get_clock_info('highres')) {'accuracy': 1.1000000000000001e-08, 'function': 'clock_gettime(CLOCK_MONOTONIC)', 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('monotonic')) {'accuracy': 1.1000000000000001e-08, 'function': 'clock_gettime(CLOCK_MONOTONIC)', 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('time')) {'accuracy': 1.1000000000000001e-08, 'function': 'clock_gettime(CLOCK_REALTIME)', 'is_adjusted': True, 'is_monotonic': False, 'resolution': 1e-09} OpenBSD on x86_64: >>> pprint.pprint(time.get_clock_info('clock')) {'accuracy': 0.01, 'function': 'clock()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 0.01} >>> pprint.pprint(time.get_clock_info('highres')) {'accuracy': 0.01, 'function': 'clock_gettime(CLOCK_MONOTONIC)', 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('monotonic')) {'accuracy': 0.01, 'function': 'clock_gettime(CLOCK_MONOTONIC)', 'is_monotonic': True, 'resolution': 1e-09} >>> pprint.pprint(time.get_clock_info('time')) {'accuracy': 0.01, 'function': 'clock_gettime(CLOCK_REALTIME)', 'is_adjusted': True, 'is_monotonic': False, 'resolution': 1e-09} Python 32 bits on Windows 64 bits: >>> pprint.pprint(time.get_clock_info('clock')) {'accuracy': 1e-08, 'function': 'QueryPerformanceCounter()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 1e-08} >>> pprint.pprint(time.get_clock_info('highres')) {'accuracy': 1e-08, 'function': 'QueryPerformanceCounter()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 1e-08} >>> pprint.pprint(time.get_clock_info('monotonic')) {'accuracy': 0.015600099999999999, 'function': 'GetTickCount()', 'is_adjusted': False, 'is_monotonic': True, 'resolution': 0.001} >>> pprint.pprint(time.get_clock_info('time')) {'accuracy': 0.015600099999999999, 'function': 'GetSystemTimeAsFileTime()', 'is_adjusted': True, 'is_monotonic': False, 'resolution': 1e-07} Some remarks: - these 4 platforms provide a monotonic clock - these 4 platforms provide the accurary of the 4 clocks (it looks like Linux is cheating) - on OpenBSD, time.highres() resolution is not so "high". It has only an accuracy of 10 ms. - as expected, the accuracy is very different from the resolution in some cases (ex: 0.0156 vs 1e-07 for time.time() on Windows) ---------- Added file: http://bugs.python.org/file25103/pep418-3.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14428> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com