annotate Tools/scripts/pystone.py @ 5792:dffabc620e4e legacy-trunk

Tweak re_tests and test_re to differentiate between groups that have no value and groups that are out of bounds.
author Guido van Rossum <guido@python.org>
date Tue, 15 Jul 1997 15:49:52 +0000
parents 17c7a133ccf7
children 6c449dff2fb8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4573
73758db2f464 /usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents: 2613
diff changeset
1 #! /usr/bin/env python
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 """
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 "PYSTONE" Benchmark Program
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
5001
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
6 Version: Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013.
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 Translated from ADA to C by Rick Richardson.
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 Every method to preserve ADA-likeness has been used,
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 at the expense of C-ness.
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 Translated from C to Python by Guido van Rossum.
5001
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
15
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
16 Version History:
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
17
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
18 Version 1.1 corrects two bugs in version 1.0:
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
19
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
20 First, it leaked memory: in Proc1(), NextRecord ends
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
21 up having a pointer to itself. I have corrected this
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
22 by zapping NextRecord.PtrComp at the end of Proc1().
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
23
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
24 Second, Proc3() used the operator != to compare a
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
25 record to None. This is rather inefficient and not
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
26 true to the intention of the original benchmark (where
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
27 a pointer comparison to None is intended; the !=
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
28 operator attempts to find a method __cmp__ to do value
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
29 comparison of the record). Version 1.1 runs 5-10
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
30 percent faster than version 1.0, so benchmark figures
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
31 of different versions can't be compared directly.
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
32
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 """
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 LOOPS = 1000
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 from time import clock
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
38
5001
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
39 __version__ = "1.1"
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
40
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 [Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
42
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 class Record:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
44
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 def __init__(self, PtrComp = None, Discr = 0, EnumComp = 0,
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 IntComp = 0, StringComp = 0):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 self.PtrComp = PtrComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 self.Discr = Discr
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 self.EnumComp = EnumComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 self.IntComp = IntComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 self.StringComp = StringComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 def copy(self):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 return Record(self.PtrComp, self.Discr, self.EnumComp,
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 self.IntComp, self.StringComp)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
56
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 TRUE = 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 FALSE = 0
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 def main():
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 Proc0()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
62
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 IntGlob = 0
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 BoolGlob = FALSE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 Char1Glob = '\0'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 Char2Glob = '\0'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 Array1Glob = [0]*51
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 Array2Glob = map(lambda x: x[:], [Array1Glob]*51)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 PtrGlb = None
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 PtrGlbNext = None
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
71
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 def Proc0():
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 global IntGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 global BoolGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 global Char1Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 global Char2Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 global Array1Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 global Array2Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 global PtrGlb
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 global PtrGlbNext
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
81
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 starttime = clock()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 for i in range(LOOPS):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 pass
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 nulltime = clock() - starttime
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
86
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 PtrGlbNext = Record()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 PtrGlb = Record()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 PtrGlb.PtrComp = PtrGlbNext
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 PtrGlb.Discr = Ident1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 PtrGlb.EnumComp = Ident3
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 PtrGlb.IntComp = 40
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 PtrGlb.StringComp = "DHRYSTONE PROGRAM, SOME STRING"
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING"
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 Array2Glob[8][7] = 10
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
96
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 starttime = clock()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
98
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 for i in range(LOOPS):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 Proc5()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 Proc4()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 IntLoc1 = 2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 IntLoc2 = 3
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING"
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 EnumLoc = Ident2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 BoolGlob = not Func2(String1Loc, String2Loc)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 while IntLoc1 < IntLoc2:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 IntLoc3 = 5 * IntLoc1 - IntLoc2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 IntLoc3 = Proc7(IntLoc1, IntLoc2)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 IntLoc1 = IntLoc1 + 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 PtrGlb = Proc1(PtrGlb)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 CharIndex = 'A'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 while CharIndex <= Char2Glob:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 if EnumLoc == Func1(CharIndex, 'C'):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 EnumLoc = Proc6(Ident1)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 CharIndex = chr(ord(CharIndex)+1)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 IntLoc3 = IntLoc2 * IntLoc1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 IntLoc2 = IntLoc3 / IntLoc1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 IntLoc1 = Proc2(IntLoc1)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
122
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 benchtime = clock() - starttime - nulltime
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 print "Pystone(%s) time for %d passes = %g" % \
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 (__version__, LOOPS, benchtime)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 print "This machine benchmarks at %g pystones/second" % \
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 (LOOPS/benchtime)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
128
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 def Proc1(PtrParIn):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 PtrParIn.PtrComp = NextRecord = PtrGlb.copy()
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 PtrParIn.IntComp = 5
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 NextRecord.IntComp = PtrParIn.IntComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 NextRecord.PtrComp = PtrParIn.PtrComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 NextRecord.PtrComp = Proc3(NextRecord.PtrComp)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 if NextRecord.Discr == Ident1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 NextRecord.IntComp = 6
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 NextRecord.EnumComp = Proc6(PtrParIn.EnumComp)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 NextRecord.PtrComp = PtrGlb.PtrComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 NextRecord.IntComp = Proc7(NextRecord.IntComp, 10)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 PtrParIn = NextRecord.copy()
5001
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
142 NextRecord.PtrComp = None
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 return PtrParIn
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
144
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 def Proc2(IntParIO):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 IntLoc = IntParIO + 10
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 while 1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 if Char1Glob == 'A':
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 IntLoc = IntLoc - 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 IntParIO = IntLoc - IntGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 EnumLoc = Ident1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 if EnumLoc == Ident1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 break
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 return IntParIO
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
155
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 def Proc3(PtrParOut):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 global IntGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
158
5001
17c7a133ccf7 Version 1.1. Fix memory leak and expensive comparison with None.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
159 if PtrGlb is not None:
2613
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 PtrParOut = PtrGlb.PtrComp
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 IntGlob = 100
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 PtrGlb.IntComp = Proc7(10, IntGlob)
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 return PtrParOut
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
165
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 def Proc4():
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 global Char2Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
168
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 BoolLoc = Char1Glob == 'A'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 BoolLoc = BoolLoc or BoolGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 Char2Glob = 'B'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
172
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 def Proc5():
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 global Char1Glob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 global BoolGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
176
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 Char1Glob = 'A'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 BoolGlob = FALSE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
179
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 def Proc6(EnumParIn):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 EnumParOut = EnumParIn
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 if not Func3(EnumParIn):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 EnumParOut = Ident4
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 if EnumParIn == Ident1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 EnumParOut = Ident1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 elif EnumParIn == Ident2:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 if IntGlob > 100:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 EnumParOut = Ident1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 EnumParOut = Ident4
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 elif EnumParIn == Ident3:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 EnumParOut = Ident2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 elif EnumParIn == Ident4:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 pass
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 elif EnumParIn == Ident5:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 EnumParOut = Ident3
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 return EnumParOut
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
198
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 def Proc7(IntParI1, IntParI2):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
200 IntLoc = IntParI1 + 2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
201 IntParOut = IntParI2 + IntLoc
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 return IntParOut
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
203
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 def Proc8(Array1Par, Array2Par, IntParI1, IntParI2):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 global IntGlob
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
206
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 IntLoc = IntParI1 + 5
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 Array1Par[IntLoc] = IntParI2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 Array1Par[IntLoc+1] = Array1Par[IntLoc]
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 Array1Par[IntLoc+30] = IntLoc
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 for IntIndex in range(IntLoc, IntLoc+2):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 Array2Par[IntLoc][IntIndex] = IntLoc
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 Array2Par[IntLoc][IntLoc-1] = Array2Par[IntLoc][IntLoc-1] + 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 Array2Par[IntLoc+20][IntLoc] = Array1Par[IntLoc]
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 IntGlob = 5
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
216
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 def Func1(CharPar1, CharPar2):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 CharLoc1 = CharPar1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 CharLoc2 = CharLoc1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 if CharLoc2 != CharPar2:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 return Ident1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 return Ident2
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
224
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 def Func2(StrParI1, StrParI2):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 IntLoc = 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 while IntLoc <= 1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
228 if Func1(StrParI1[IntLoc], StrParI2[IntLoc+1]) == Ident1:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 CharLoc = 'A'
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 IntLoc = IntLoc + 1
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 if CharLoc >= 'W' and CharLoc <= 'Z':
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 IntLoc = 7
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 if CharLoc == 'X':
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 return TRUE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 if StrParI1 > StrParI2:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 IntLoc = IntLoc + 7
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 return TRUE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 else:
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 return FALSE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
241
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 def Func3(EnumParIn):
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 EnumLoc = EnumParIn
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 if EnumLoc == Ident3: return TRUE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 return FALSE
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
246
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 if __name__ == '__main__':
b368be7b062a added "pystone" benchmark
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 main()