summaryrefslogtreecommitdiffstats
path: root/Lib/test/pystone.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-01-18 02:20:37 (GMT)
committerGuido van Rossum <guido@python.org>1997-01-18 02:20:37 (GMT)
commit04f2b453bbc282be83529b6fb726dc92dbbdbfc3 (patch)
treea744d8e76e0a8a4874623be5b9be39219f9377a9 /Lib/test/pystone.py
parent3e7ae7ab173effc320b05a3d5a9fde7eac706771 (diff)
downloadcpython-04f2b453bbc282be83529b6fb726dc92dbbdbfc3.zip
cpython-04f2b453bbc282be83529b6fb726dc92dbbdbfc3.tar.gz
cpython-04f2b453bbc282be83529b6fb726dc92dbbdbfc3.tar.bz2
Version 1.1. Fix memory leak and expensive comparison with None.
Diffstat (limited to 'Lib/test/pystone.py')
-rwxr-xr-xLib/test/pystone.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/Lib/test/pystone.py b/Lib/test/pystone.py
index c388982..23e3b7f 100755
--- a/Lib/test/pystone.py
+++ b/Lib/test/pystone.py
@@ -3,7 +3,7 @@
"""
"PYSTONE" Benchmark Program
-Version: Python/1.0 (corresponds to C/1.1)
+Version: Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)
Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
@@ -12,13 +12,31 @@ Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
at the expense of C-ness.
Translated from C to Python by Guido van Rossum.
+
+Version History:
+
+ Version 1.1 corrects two bugs in version 1.0:
+
+ First, it leaked memory: in Proc1(), NextRecord ends
+ up having a pointer to itself. I have corrected this
+ by zapping NextRecord.PtrComp at the end of Proc1().
+
+ Second, Proc3() used the operator != to compare a
+ record to None. This is rather inefficient and not
+ true to the intention of the original benchmark (where
+ a pointer comparison to None is intended; the !=
+ operator attempts to find a method __cmp__ to do value
+ comparison of the record). Version 1.1 runs 5-10
+ percent faster than version 1.0, so benchmark figures
+ of different versions can't be compared directly.
+
"""
LOOPS = 1000
from time import clock
-__version__ = "1.0"
+__version__ = "1.1"
[Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6)
@@ -121,6 +139,7 @@ def Proc1(PtrParIn):
NextRecord.IntComp = Proc7(NextRecord.IntComp, 10)
else:
PtrParIn = NextRecord.copy()
+ NextRecord.PtrComp = None
return PtrParIn
def Proc2(IntParIO):
@@ -137,7 +156,7 @@ def Proc2(IntParIO):
def Proc3(PtrParOut):
global IntGlob
- if PtrGlb != None:
+ if PtrGlb is not None:
PtrParOut = PtrGlb.PtrComp
else:
IntGlob = 100