annotate Tools/pybench/clockres.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 70c2efa00007
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38801
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
1 #!/usr/bin/env python
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
2
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
3 """ clockres - calculates the resolution in seconds of a given timer.
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
4
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
5 Copyright (c) 2006, Marc-Andre Lemburg (mal@egenix.com). See the
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
6 documentation for further information on copyrights, or contact
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
7 the author. All Rights Reserved.
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
8
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
9 """
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
10 import time
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
11
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
12 TEST_TIME = 1.0
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
13
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
14 def clockres(timer):
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
15 d = {}
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
16 wallclock = time.time
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
17 start = wallclock()
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
18 stop = wallclock() + TEST_TIME
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
19 spin_loops = range(1000)
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
20 while 1:
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
21 now = wallclock()
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
22 if now >= stop:
38803
70c2efa00007 Whitespace normalization.
Marc-André Lemburg <mal@egenix.com>
parents: 38801
diff changeset
23 break
38801
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
24 for i in spin_loops:
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
25 d[timer()] = 1
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
26 values = d.keys()
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
27 values.sort()
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
28 min_diff = TEST_TIME
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
29 for i in range(len(values) - 1):
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
30 diff = values[i+1] - values[i]
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
31 if diff < min_diff:
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
32 min_diff = diff
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
33 return min_diff
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
34
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
35 if __name__ == '__main__':
38803
70c2efa00007 Whitespace normalization.
Marc-André Lemburg <mal@egenix.com>
parents: 38801
diff changeset
36 print 'Clock resolution of various timer implementations:'
38801
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
37 print 'time.clock: %10.3fus' % (clockres(time.clock) * 1e6)
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
38 print 'time.time: %10.3fus' % (clockres(time.time) * 1e6)
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
39 try:
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
40 import systimes
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
41 print 'systimes.processtime: %10.3fus' % (clockres(systimes.processtime) * 1e6)
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
42 except ImportError:
2167105123e4 Updated to pybench 2.0.
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
43 pass