[Python-checkins] peps: PEP 418: clock_precision.py was wrong, recompute all "Precision in Python"
victor.stinner
python-checkins at python.org
Wed Apr 18 22:55:11 CEST 2012
http://hg.python.org/peps/rev/5b2f298e0eed
changeset: 4267:5b2f298e0eed
user: Victor Stinner <victor.stinner at gmail.com>
date: Wed Apr 18 22:49:58 2012 +0200
summary:
PEP 418: clock_precision.py was wrong, recompute all "Precision in Python"
files:
pep-0418/clock_precision.py | 36 +++++++++++++++---------
1 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/pep-0418/clock_precision.py b/pep-0418/clock_precision.py
--- a/pep-0418/clock_precision.py
+++ b/pep-0418/clock_precision.py
@@ -1,26 +1,33 @@
import time
+try:
+ from time import timeout_time
+except ImportError:
+ from time import time as timeout_time
+
def compute_precision(func):
- previous = func()
precision = None
points = 0
- min_points = 100
- while points < min_points:
- value = func()
- if value == previous:
- continue
- dt = value - previous
- previous = value
+ timeout = timeout_time() + 1.0
+ previous = func()
+ while timeout_time() < timeout or points < 3:
+ for loop in range(10):
+ t1 = func()
+ t2 = func()
+ dt = t2 - t1
+ if 0 < dt:
+ break
+ else:
+ dt = t2 - previous
+ if dt <= 0.0:
+ continue
if precision is not None:
precision = min(precision, dt)
else:
precision = dt
- if precision < 10e-6:
- min_points = 5000
- elif precision < 1e-3:
- min_points = 1000
points += 1
- return dt
+ previous = func()
+ return precision
def format_duration(dt):
if dt >= 1e-3:
@@ -31,8 +38,8 @@
return "%.0f ns" % (dt * 1e9)
def test_clock(name, func):
+ print("%s:" % name)
precision = compute_precision(func)
- print("%s:" % name)
print("- precision in Python: %s" % format_duration(precision))
@@ -50,6 +57,7 @@
print("- resolution: %s" % format_duration(info['resolution']))
clock_ids = [name for name in dir(time) if name.startswith("CLOCK_")]
+clock_ids.sort()
for clock_id_text in clock_ids:
clock_id = getattr(time, clock_id_text)
name = 'clock_gettime(%s)' % clock_id_text
--
Repository URL: http://hg.python.org/peps
More information about the Python-checkins
mailing list