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
b81b5c72
Commit
b81b5c72
authored
Sep 16, 1997
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved pystone to Lib/test. Use import test.pystone to run it.
parent
d2ba3690
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
249 deletions
+0
-249
Tools/scripts/README
Tools/scripts/README
+0
-1
Tools/scripts/pystone.py
Tools/scripts/pystone.py
+0
-248
No files found.
Tools/scripts/README
View file @
b81b5c72
...
...
@@ -28,7 +28,6 @@ pathfix.py Change #!/usr/local/bin/python into something else
pdeps.py Print dependencies between Python modules
pindent.py Indent Python code, giving block-closing comments
ptags.py Create vi tags file for Python modules
pystone.py Benchmark, based on "Dhrystone" C benchmark
suff.py Sort a list of files by suffix
sum5.py Print md5 checksums of files
treesync.py Synchronize source trees (very ideosyncratic)
...
...
Tools/scripts/pystone.py
deleted
100755 → 0
View file @
d2ba3690
#! /usr/bin/env python
"""
"PYSTONE" Benchmark Program
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.
Translated from ADA to C by Rick Richardson.
Every method to preserve ADA-likeness has been used,
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
=
10000
from
time
import
clock
__version__
=
"1.1"
[
Ident1
,
Ident2
,
Ident3
,
Ident4
,
Ident5
]
=
range
(
1
,
6
)
class
Record
:
def
__init__
(
self
,
PtrComp
=
None
,
Discr
=
0
,
EnumComp
=
0
,
IntComp
=
0
,
StringComp
=
0
):
self
.
PtrComp
=
PtrComp
self
.
Discr
=
Discr
self
.
EnumComp
=
EnumComp
self
.
IntComp
=
IntComp
self
.
StringComp
=
StringComp
def
copy
(
self
):
return
Record
(
self
.
PtrComp
,
self
.
Discr
,
self
.
EnumComp
,
self
.
IntComp
,
self
.
StringComp
)
TRUE
=
1
FALSE
=
0
def
main
():
Proc0
()
IntGlob
=
0
BoolGlob
=
FALSE
Char1Glob
=
'
\
0
'
Char2Glob
=
'
\
0
'
Array1Glob
=
[
0
]
*
51
Array2Glob
=
map
(
lambda
x
:
x
[:],
[
Array1Glob
]
*
51
)
PtrGlb
=
None
PtrGlbNext
=
None
def
Proc0
():
global
IntGlob
global
BoolGlob
global
Char1Glob
global
Char2Glob
global
Array1Glob
global
Array2Glob
global
PtrGlb
global
PtrGlbNext
starttime
=
clock
()
for
i
in
range
(
LOOPS
):
pass
nulltime
=
clock
()
-
starttime
PtrGlbNext
=
Record
()
PtrGlb
=
Record
()
PtrGlb
.
PtrComp
=
PtrGlbNext
PtrGlb
.
Discr
=
Ident1
PtrGlb
.
EnumComp
=
Ident3
PtrGlb
.
IntComp
=
40
PtrGlb
.
StringComp
=
"DHRYSTONE PROGRAM, SOME STRING"
String1Loc
=
"DHRYSTONE PROGRAM, 1'ST STRING"
Array2Glob
[
8
][
7
]
=
10
starttime
=
clock
()
for
i
in
range
(
LOOPS
):
Proc5
()
Proc4
()
IntLoc1
=
2
IntLoc2
=
3
String2Loc
=
"DHRYSTONE PROGRAM, 2'ND STRING"
EnumLoc
=
Ident2
BoolGlob
=
not
Func2
(
String1Loc
,
String2Loc
)
while
IntLoc1
<
IntLoc2
:
IntLoc3
=
5
*
IntLoc1
-
IntLoc2
IntLoc3
=
Proc7
(
IntLoc1
,
IntLoc2
)
IntLoc1
=
IntLoc1
+
1
Proc8
(
Array1Glob
,
Array2Glob
,
IntLoc1
,
IntLoc3
)
PtrGlb
=
Proc1
(
PtrGlb
)
CharIndex
=
'A'
while
CharIndex
<=
Char2Glob
:
if
EnumLoc
==
Func1
(
CharIndex
,
'C'
):
EnumLoc
=
Proc6
(
Ident1
)
CharIndex
=
chr
(
ord
(
CharIndex
)
+
1
)
IntLoc3
=
IntLoc2
*
IntLoc1
IntLoc2
=
IntLoc3
/
IntLoc1
IntLoc2
=
7
*
(
IntLoc3
-
IntLoc2
)
-
IntLoc1
IntLoc1
=
Proc2
(
IntLoc1
)
benchtime
=
clock
()
-
starttime
-
nulltime
print
"Pystone(%s) time for %d passes = %g"
%
\
(
__version__
,
LOOPS
,
benchtime
)
print
"This machine benchmarks at %g pystones/second"
%
\
(
LOOPS
/
benchtime
)
def
Proc1
(
PtrParIn
):
PtrParIn
.
PtrComp
=
NextRecord
=
PtrGlb
.
copy
()
PtrParIn
.
IntComp
=
5
NextRecord
.
IntComp
=
PtrParIn
.
IntComp
NextRecord
.
PtrComp
=
PtrParIn
.
PtrComp
NextRecord
.
PtrComp
=
Proc3
(
NextRecord
.
PtrComp
)
if
NextRecord
.
Discr
==
Ident1
:
NextRecord
.
IntComp
=
6
NextRecord
.
EnumComp
=
Proc6
(
PtrParIn
.
EnumComp
)
NextRecord
.
PtrComp
=
PtrGlb
.
PtrComp
NextRecord
.
IntComp
=
Proc7
(
NextRecord
.
IntComp
,
10
)
else
:
PtrParIn
=
NextRecord
.
copy
()
NextRecord
.
PtrComp
=
None
return
PtrParIn
def
Proc2
(
IntParIO
):
IntLoc
=
IntParIO
+
10
while
1
:
if
Char1Glob
==
'A'
:
IntLoc
=
IntLoc
-
1
IntParIO
=
IntLoc
-
IntGlob
EnumLoc
=
Ident1
if
EnumLoc
==
Ident1
:
break
return
IntParIO
def
Proc3
(
PtrParOut
):
global
IntGlob
if
PtrGlb
is
not
None
:
PtrParOut
=
PtrGlb
.
PtrComp
else
:
IntGlob
=
100
PtrGlb
.
IntComp
=
Proc7
(
10
,
IntGlob
)
return
PtrParOut
def
Proc4
():
global
Char2Glob
BoolLoc
=
Char1Glob
==
'A'
BoolLoc
=
BoolLoc
or
BoolGlob
Char2Glob
=
'B'
def
Proc5
():
global
Char1Glob
global
BoolGlob
Char1Glob
=
'A'
BoolGlob
=
FALSE
def
Proc6
(
EnumParIn
):
EnumParOut
=
EnumParIn
if
not
Func3
(
EnumParIn
):
EnumParOut
=
Ident4
if
EnumParIn
==
Ident1
:
EnumParOut
=
Ident1
elif
EnumParIn
==
Ident2
:
if
IntGlob
>
100
:
EnumParOut
=
Ident1
else
:
EnumParOut
=
Ident4
elif
EnumParIn
==
Ident3
:
EnumParOut
=
Ident2
elif
EnumParIn
==
Ident4
:
pass
elif
EnumParIn
==
Ident5
:
EnumParOut
=
Ident3
return
EnumParOut
def
Proc7
(
IntParI1
,
IntParI2
):
IntLoc
=
IntParI1
+
2
IntParOut
=
IntParI2
+
IntLoc
return
IntParOut
def
Proc8
(
Array1Par
,
Array2Par
,
IntParI1
,
IntParI2
):
global
IntGlob
IntLoc
=
IntParI1
+
5
Array1Par
[
IntLoc
]
=
IntParI2
Array1Par
[
IntLoc
+
1
]
=
Array1Par
[
IntLoc
]
Array1Par
[
IntLoc
+
30
]
=
IntLoc
for
IntIndex
in
range
(
IntLoc
,
IntLoc
+
2
):
Array2Par
[
IntLoc
][
IntIndex
]
=
IntLoc
Array2Par
[
IntLoc
][
IntLoc
-
1
]
=
Array2Par
[
IntLoc
][
IntLoc
-
1
]
+
1
Array2Par
[
IntLoc
+
20
][
IntLoc
]
=
Array1Par
[
IntLoc
]
IntGlob
=
5
def
Func1
(
CharPar1
,
CharPar2
):
CharLoc1
=
CharPar1
CharLoc2
=
CharLoc1
if
CharLoc2
!=
CharPar2
:
return
Ident1
else
:
return
Ident2
def
Func2
(
StrParI1
,
StrParI2
):
IntLoc
=
1
while
IntLoc
<=
1
:
if
Func1
(
StrParI1
[
IntLoc
],
StrParI2
[
IntLoc
+
1
])
==
Ident1
:
CharLoc
=
'A'
IntLoc
=
IntLoc
+
1
if
CharLoc
>=
'W'
and
CharLoc
<=
'Z'
:
IntLoc
=
7
if
CharLoc
==
'X'
:
return
TRUE
else
:
if
StrParI1
>
StrParI2
:
IntLoc
=
IntLoc
+
7
return
TRUE
else
:
return
FALSE
def
Func3
(
EnumParIn
):
EnumLoc
=
EnumParIn
if
EnumLoc
==
Ident3
:
return
TRUE
return
FALSE
if
__name__
==
'__main__'
:
main
()
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