Kaydet (Commit) d49af5dc authored tarafından Terry Jan Reedy's avatar Terry Jan Reedy

Issue #17414: Add timeit, repeat, and default_timer to timeit.__all__.

Revise module docstring and update itertools import and use.
üst e95f7c3d
...@@ -31,38 +31,29 @@ treated similarly. ...@@ -31,38 +31,29 @@ treated similarly.
If -n is not given, a suitable number of loops is calculated by trying If -n is not given, a suitable number of loops is calculated by trying
successive powers of 10 until the total time is at least 0.2 seconds. successive powers of 10 until the total time is at least 0.2 seconds.
The difference in default timer function is because on Windows,
clock() has microsecond granularity but time()'s granularity is 1/60th
of a second; on Unix, clock() has 1/100th of a second granularity and
time() is much more precise. On either platform, the default timer
functions measure wall clock time, not the CPU time. This means that
other processes running on the same computer may interfere with the
timing. The best thing to do when accurate timing is necessary is to
repeat the timing a few times and use the best time. The -r option is
good for this; the default of 3 repetitions is probably enough in most
cases. On Unix, you can use clock() to measure CPU time.
Note: there is a certain baseline overhead associated with executing a Note: there is a certain baseline overhead associated with executing a
pass statement. The code here doesn't try to hide it, but you should pass statement. It differs between versions. The code here doesn't try
be aware of it. The baseline overhead can be measured by invoking the to hide it, but you should be aware of it. The baseline overhead can be
program without arguments. measured by invoking the program without arguments.
The baseline overhead differs between Python versions! Also, to Classes:
fairly compare older Python versions to Python 2.3, you may want to
use python -O for the older versions to avoid timing SET_LINENO Timer
instructions.
Functions:
timeit(string, string) -> float
repeat(string, string) -> list
default_timer() -> float
""" """
import gc import gc
import sys import sys
import time import time
try: import itertools
import itertools
except ImportError:
# Must be an older Python version (see timeit() below)
itertools = None
__all__ = ["Timer"] __all__ = ["Timer", "timeit", "repeat", "default_timer"]
dummy_src_name = "<timeit-src>" dummy_src_name = "<timeit-src>"
default_number = 1000000 default_number = 1000000
...@@ -180,10 +171,7 @@ class Timer: ...@@ -180,10 +171,7 @@ class Timer:
to one million. The main statement, the setup statement and to one million. The main statement, the setup statement and
the timer function to be used are passed to the constructor. the timer function to be used are passed to the constructor.
""" """
if itertools: it = itertools.repeat(None, number)
it = itertools.repeat(None, number)
else:
it = [None] * number
gcold = gc.isenabled() gcold = gc.isenabled()
gc.disable() gc.disable()
try: try:
......
...@@ -449,6 +449,7 @@ Eric Groo ...@@ -449,6 +449,7 @@ Eric Groo
Dag Gruneau Dag Gruneau
Filip Gruszczyński Filip Gruszczyński
Thomas Guettler Thomas Guettler
Anuj Gupta
Michael Guravage Michael Guravage
Lars Gustäbel Lars Gustäbel
Thomas Güttler Thomas Güttler
...@@ -1359,3 +1360,4 @@ Cheng Zhang ...@@ -1359,3 +1360,4 @@ Cheng Zhang
Kai Zhu Kai Zhu
Tarek Ziadé Tarek Ziadé
Peter Åstrand Peter Åstrand
...@@ -280,6 +280,8 @@ Core and Builtins ...@@ -280,6 +280,8 @@ Core and Builtins
Library Library
------- -------
- Issue #17414: Add timeit, repeat, and default_timer to timeit.__all__.
- Issue #1285086: Get rid of the refcounting hack and speed up - Issue #1285086: Get rid of the refcounting hack and speed up
urllib.parse.unquote() and urllib.parse.unquote_to_bytes(). urllib.parse.unquote() and urllib.parse.unquote_to_bytes().
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment