Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
4c95da45
Commit
4c95da45
authored
Jan 18, 1997
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version 1.1. Fix memory leak and expensive comparison with None.
parent
a1c5ab57
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
6 deletions
+44
-6
Lib/test/pystone.py
Lib/test/pystone.py
+22
-3
Tools/scripts/pystone.py
Tools/scripts/pystone.py
+22
-3
No files found.
Lib/test/pystone.py
View file @
4c95da45
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
"""
"""
"PYSTONE" Benchmark Program
"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.
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.
...
@@ -12,13 +12,31 @@ Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
at the expense of C-ness.
at the expense of C-ness.
Translated from C to Python by Guido van Rossum.
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
LOOPS
=
1000
from
time
import
clock
from
time
import
clock
__version__
=
"1.
0
"
__version__
=
"1.
1
"
[
Ident1
,
Ident2
,
Ident3
,
Ident4
,
Ident5
]
=
range
(
1
,
6
)
[
Ident1
,
Ident2
,
Ident3
,
Ident4
,
Ident5
]
=
range
(
1
,
6
)
...
@@ -121,6 +139,7 @@ def Proc1(PtrParIn):
...
@@ -121,6 +139,7 @@ def Proc1(PtrParIn):
NextRecord
.
IntComp
=
Proc7
(
NextRecord
.
IntComp
,
10
)
NextRecord
.
IntComp
=
Proc7
(
NextRecord
.
IntComp
,
10
)
else
:
else
:
PtrParIn
=
NextRecord
.
copy
()
PtrParIn
=
NextRecord
.
copy
()
NextRecord
.
PtrComp
=
None
return
PtrParIn
return
PtrParIn
def
Proc2
(
IntParIO
):
def
Proc2
(
IntParIO
):
...
@@ -137,7 +156,7 @@ def Proc2(IntParIO):
...
@@ -137,7 +156,7 @@ def Proc2(IntParIO):
def
Proc3
(
PtrParOut
):
def
Proc3
(
PtrParOut
):
global
IntGlob
global
IntGlob
if
PtrGlb
!=
None
:
if
PtrGlb
is
not
None
:
PtrParOut
=
PtrGlb
.
PtrComp
PtrParOut
=
PtrGlb
.
PtrComp
else
:
else
:
IntGlob
=
100
IntGlob
=
100
...
...
Tools/scripts/pystone.py
View file @
4c95da45
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
"""
"""
"PYSTONE" Benchmark Program
"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.
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.
...
@@ -12,13 +12,31 @@ Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
at the expense of C-ness.
at the expense of C-ness.
Translated from C to Python by Guido van Rossum.
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
LOOPS
=
1000
from
time
import
clock
from
time
import
clock
__version__
=
"1.
0
"
__version__
=
"1.
1
"
[
Ident1
,
Ident2
,
Ident3
,
Ident4
,
Ident5
]
=
range
(
1
,
6
)
[
Ident1
,
Ident2
,
Ident3
,
Ident4
,
Ident5
]
=
range
(
1
,
6
)
...
@@ -121,6 +139,7 @@ def Proc1(PtrParIn):
...
@@ -121,6 +139,7 @@ def Proc1(PtrParIn):
NextRecord
.
IntComp
=
Proc7
(
NextRecord
.
IntComp
,
10
)
NextRecord
.
IntComp
=
Proc7
(
NextRecord
.
IntComp
,
10
)
else
:
else
:
PtrParIn
=
NextRecord
.
copy
()
PtrParIn
=
NextRecord
.
copy
()
NextRecord
.
PtrComp
=
None
return
PtrParIn
return
PtrParIn
def
Proc2
(
IntParIO
):
def
Proc2
(
IntParIO
):
...
@@ -137,7 +156,7 @@ def Proc2(IntParIO):
...
@@ -137,7 +156,7 @@ def Proc2(IntParIO):
def
Proc3
(
PtrParOut
):
def
Proc3
(
PtrParOut
):
global
IntGlob
global
IntGlob
if
PtrGlb
!=
None
:
if
PtrGlb
is
not
None
:
PtrParOut
=
PtrGlb
.
PtrComp
PtrParOut
=
PtrGlb
.
PtrComp
else
:
else
:
IntGlob
=
100
IntGlob
=
100
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment