diff --git a/Misc/NEWS b/Misc/NEWS index d328c61c2b5..16abb93b8e0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -394,6 +394,9 @@ Library Tools/Demos ----------- +- Issue #4704: remove use of cmp() in pybench, bump its version number to 2.1, + and make it 2.6-compatible. + - Ttk demos added in Demo/tkinter/ttk/ - Issue #4677: add two list comprehension tests to pybench. diff --git a/Tools/pybench/Calls.py b/Tools/pybench/Calls.py index 7c11867eae3..2e6da1840ff 100644 --- a/Tools/pybench/Calls.py +++ b/Tools/pybench/Calls.py @@ -2,7 +2,7 @@ from pybench import Test class PythonFunctionCalls(Test): - version = 2.0 + version = 2.1 operations = 5*(1+4+4+2) rounds = 60000 @@ -178,8 +178,8 @@ class BuiltinFunctionCalls(Test): # localize functions f0 = globals f1 = hash - f2 = cmp - f3 = range + f2 = divmod + f3 = max # do calls for i in range(self.rounds): @@ -279,8 +279,8 @@ class BuiltinFunctionCalls(Test): # localize functions f0 = dir f1 = hash - f2 = range - f3 = range + f2 = divmod + f3 = max # do calls for i in range(self.rounds): diff --git a/Tools/pybench/CommandLine.py b/Tools/pybench/CommandLine.py index d6ef0befacb..715bc49b58d 100644 --- a/Tools/pybench/CommandLine.py +++ b/Tools/pybench/CommandLine.py @@ -11,6 +11,8 @@ """ +from __future__ import print_function + __copyright__ = """\ Copyright (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com) Copyright (c), 2000-2006, eGenix.com Software GmbH (info@egenix.com) diff --git a/Tools/pybench/README b/Tools/pybench/README index 022c8dea9ca..b0151247191 100644 --- a/Tools/pybench/README +++ b/Tools/pybench/README @@ -82,7 +82,7 @@ Options and default settings: --examples show examples of usage Version: - 2.0 + 2.1 The normal operation is to run the suite and display the results. Use -f to save them for later reuse or comparisons. @@ -95,9 +95,9 @@ Available timers: Examples: -python2.1 pybench.py -f p21.pybench -python2.5 pybench.py -f p25.pybench -python pybench.py -s p25.pybench -c p21.pybench +python3.0 pybench.py -f p30.pybench +python3.1 pybench.py -f p31.pybench +python pybench.py -s p31.pybench -c p30.pybench """ License @@ -111,9 +111,9 @@ Sample output """ ------------------------------------------------------------------------------- -PYBENCH 2.0 +PYBENCH 2.1 ------------------------------------------------------------------------------- -* using Python 2.4.2 +* using CPython 3.0 * disabled garbage collection * system check interval set to maximum: 2147483647 * using timer: time.time @@ -141,8 +141,9 @@ Benchmark: 2006-06-12 12:09:25 Processor: x86_64 Python: + Implementation: CPython Executable: /usr/local/bin/python - Version: 2.4.2 + Version: 3.0 Compiler: GCC 3.3.4 (pre 3.3.5 20040809) Bits: 64bit Build: Oct 1 2005 15:24:35 (#1) @@ -331,6 +332,11 @@ versions of the test will list as "n/a" to reflect the change. Version History --------------- + 2.1: made some minor changes for compatibility with Python 3.0: + - replaced cmp with divmod and range with max in Calls.py + (cmp no longer exists in 3.0, and range is a list in + Python 2.x and an iterator in Python 3.x) + 2.0: rewrote parts of pybench which resulted in more repeatable timings: - made timer a parameter diff --git a/Tools/pybench/Strings.py b/Tools/pybench/Strings.py index 25e2ad5b465..8e3d702a917 100644 --- a/Tools/pybench/Strings.py +++ b/Tools/pybench/Strings.py @@ -1,6 +1,12 @@ from pybench import Test import sys +try: + intern +except NameError: + intern = sys.intern + + class ConcatStrings(Test): version = 2.0 @@ -174,7 +180,7 @@ class CompareInternedStrings(Test): def test(self): # Make sure the strings *are* interned - s = sys.intern(''.join(map(str,range(10)))) + s = intern(''.join(map(str,range(10)))) t = s for i in range(self.rounds): @@ -240,7 +246,7 @@ class CompareInternedStrings(Test): def calibrate(self): - s = sys.intern(''.join(map(str,range(10)))) + s = intern(''.join(map(str,range(10)))) t = s for i in range(self.rounds): diff --git a/Tools/pybench/pybench.py b/Tools/pybench/pybench.py index 4c5ea26a95f..ea701363c94 100755 --- a/Tools/pybench/pybench.py +++ b/Tools/pybench/pybench.py @@ -3,14 +3,15 @@ """ A Python Benchmark Suite """ -# -# Note: Please keep this module compatible to Python 1.5.2. +# Note: Please keep this module compatible to Python 2.6. # # Tests may include features in later Python versions, but these # should then be embedded in try-except clauses in the configuration # module Setup.py. # +from __future__ import print_function + # pybench Copyright __copyright__ = """\ Copyright (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com) @@ -44,7 +45,7 @@ except ImportError: import pickle # Version number; version history: see README file ! -__version__ = '2.0' +__version__ = '2.1' ### Constants @@ -174,7 +175,7 @@ class Test: # Version number of the test as float (x.yy); this is important # for comparisons of benchmark runs - tests with unequal version # number will not get compared. - version = 2.0 + version = 2.1 # The number of abstract operations done in each round of the # test. An operation is the basic unit of what you want to @@ -403,7 +404,7 @@ class Benchmark: roundtime = 0 # Benchmark version number as float x.yy - version = 2.0 + version = 2.1 # Produce verbose output ? verbose = 0 diff --git a/Tools/pybench/systimes.py b/Tools/pybench/systimes.py index a0f30668571..6bc7e80ef46 100644 --- a/Tools/pybench/systimes.py +++ b/Tools/pybench/systimes.py @@ -31,6 +31,9 @@ the author. All Rights Reserved. """ + +from __future__ import print_function + import time, sys #