summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2003-03-06 03:02:10 (GMT)
committerGuido van Rossum <guido@python.org>2003-03-06 03:02:10 (GMT)
commite8577b7298c758966e685bf068a148746608de85 (patch)
treeed733f7ca0fd87e64878c837d83226cd4e36b084
parentb7ab6004b18bddeca8a9a21a8ca6d701f896b704 (diff)
downloadcpython-e8577b7298c758966e685bf068a148746608de85.zip
cpython-e8577b7298c758966e685bf068a148746608de85.tar.gz
cpython-e8577b7298c758966e685bf068a148746608de85.tar.bz2
Add notes about baseline overhead, and about different Python
versions. Add -h/--help option to print doc string.
-rw-r--r--Lib/timeit.py28
1 files changed, 22 insertions, 6 deletions
diff --git a/Lib/timeit.py b/Lib/timeit.py
index fd177cd..3d1f300 100644
--- a/Lib/timeit.py
+++ b/Lib/timeit.py
@@ -7,7 +7,7 @@ the Python Cookbook, published by O'Reilly.
Library usage: see the Timer class.
Command line usage:
- python timeit.py [-n N] [-r N] [-s S] [-t] [-c] [statement]
+ python timeit.py [-n N] [-r N] [-s S] [-t] [-c] [-h] [statement]
Options:
-n/--number N: how many times to execute 'statement' (default: see below)
@@ -15,6 +15,7 @@ Options:
-s/--setup S: statements executed once before 'statement' (default 'pass')
-t/--time: use time.time() (default on Unix)
-c/--clock: use time.clock() (default on Windows)
+ -h/--help: print this usage message and exit
statement: statement to be timed (default 'pass')
A multi-line statement may be given by specifying each line as a
@@ -33,11 +34,22 @@ 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. On Unix, you can use clock() to measure CPU time.
+
+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
+be aware of it (especially when comparing different versions of
+Python). The baseline overhead is measured by invoking the program
+without arguments.
"""
# To use this module with older versions of Python, the dependency on
# the itertools module is easily removed; in the template, instead of
-# itertools.repeat(None, count), use [None]*count. It's barely slower.
+# itertools.repeat(None, number), use [None]*number. It's barely
+# slower. Note: the baseline overhead, measured by the default
+# invocation, differs for older Python versions! Also, to 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
+# instructions.
import sys
import math
@@ -141,11 +153,12 @@ def main(args=None):
args = sys.argv[1:]
import getopt
try:
- opts, args = getopt.getopt(args, "n:s:r:tc",
+ opts, args = getopt.getopt(args, "n:s:r:tch",
["number=", "setup=", "repeat=",
- "time", "clock"])
+ "time", "clock", "help"])
except getopt.error, err:
print err
+ print "use -h/--help for command line help"
return 2
timer = default_timer
stmt = "\n".join(args) or "pass"
@@ -161,10 +174,13 @@ def main(args=None):
repeat = int(a)
if repeat <= 0:
repeat = 1
- if o in ("-t", "time"):
+ if o in ("-t", "--time"):
timer = time.time
- if o in ("-c", "clock"):
+ if o in ("-c", "--clock"):
timer = time.clock
+ if o in ("-h", "--help"):
+ print __doc__,
+ return 0
t = Timer(stmt, setup, timer)
if number == 0:
# determine number so that 0.2 <= total time < 2.0