Issue #21634: Fix pystone micro-benchmark: use floor division instead of true

division to benchmark integers instead of floating point numbers. Set pystone
version to 1.2. Patch written by Lennart Regebro.
This commit is contained in:
Victor Stinner 2014-06-02 14:16:44 +02:00
parent b166191886
commit d4d39c761c
2 changed files with 15 additions and 4 deletions

View File

@ -3,7 +3,7 @@
""" """
"PYSTONE" Benchmark Program "PYSTONE" Benchmark Program
Version: Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes) Version: Python/1.2 (corresponds to C/1.1 plus 3 Pystone fixes)
Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013. Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
@ -30,13 +30,20 @@ Version History:
percent faster than version 1.0, so benchmark figures percent faster than version 1.0, so benchmark figures
of different versions can't be compared directly. of different versions can't be compared directly.
Version 1.2 changes the division to floor division.
Under Python 3 version 1.1 would use the normal division
operator, resulting in some of the operations mistakenly
yielding floats. Version 1.2 instead uses floor division
making the benchmark a integer benchmark again.
""" """
LOOPS = 50000 LOOPS = 50000
from time import clock from time import clock
__version__ = "1.1" __version__ = "1.2"
[Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6) [Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6)
@ -123,7 +130,7 @@ def Proc0(loops=LOOPS):
EnumLoc = Proc6(Ident1) EnumLoc = Proc6(Ident1)
CharIndex = chr(ord(CharIndex)+1) CharIndex = chr(ord(CharIndex)+1)
IntLoc3 = IntLoc2 * IntLoc1 IntLoc3 = IntLoc2 * IntLoc1
IntLoc2 = IntLoc3 / IntLoc1 IntLoc2 = IntLoc3 // IntLoc1
IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1 IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1
IntLoc1 = Proc2(IntLoc1) IntLoc1 = Proc2(IntLoc1)

View File

@ -46,7 +46,7 @@ Library
- Issue #14710: pkgutil.find_loader() no longer raises an exception when a - Issue #14710: pkgutil.find_loader() no longer raises an exception when a
module doesn't exist. module doesn't exist.
- Issue #21481: Argparse equality and inequality tests now return - Issue #21481: Argparse equality and inequality tests now return
NotImplemented when comparing to an unknown type. NotImplemented when comparing to an unknown type.
- Issue #8743: Fix interoperability between set objects and the - Issue #8743: Fix interoperability between set objects and the
@ -66,6 +66,10 @@ Build
Tests Tests
----- -----
- Issue #21634: Fix pystone micro-benchmark: use floor division instead of true
division to benchmark integers instead of floating point numbers. Set pystone
version to 1.2. Patch written by Lennart Regebro.
- Issue #21605: Added tests for Tkinter images. - Issue #21605: Added tests for Tkinter images.
- Issue #21493: Added test for ntpath.expanduser(). Original patch by - Issue #21493: Added test for ntpath.expanduser(). Original patch by