blob: 82e7a9137be31e07c008d347548e79e64b7d0c91 [file] [log] [blame]
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001from pybench import Test
2
3class PythonFunctionCalls(Test):
4
5 version = 0.3
6 operations = 5*(1+4+4+2)
7 rounds = 60000
8
9 def test(self):
10
11 global f,f1,g,h
12
13 # define functions
14 def f():
15 pass
16
17 def f1(x):
18 pass
19
20 def g(a,b,c):
21 return a,b,c
22
23 def h(a,b,c,d=1,e=2,f=3):
24 return d,e,f
25
26 # do calls
27 for i in xrange(self.rounds):
28
29 f()
30 f1(i)
31 f1(i)
32 f1(i)
33 f1(i)
34 g(i,i,i)
35 g(i,i,i)
36 g(i,i,i)
37 g(i,i,i)
38 h(i,i,3,i,i)
39 h(i,i,i,2,i,3)
40
41 f()
42 f1(i)
43 f1(i)
44 f1(i)
45 f1(i)
46 g(i,i,i)
47 g(i,i,i)
48 g(i,i,i)
49 g(i,i,i)
50 h(i,i,3,i,i)
51 h(i,i,i,2,i,3)
52
53 f()
54 f1(i)
55 f1(i)
56 f1(i)
57 f1(i)
58 g(i,i,i)
59 g(i,i,i)
60 g(i,i,i)
61 g(i,i,i)
62 h(i,i,3,i,i)
63 h(i,i,i,2,i,3)
64
65 f()
66 f1(i)
67 f1(i)
68 f1(i)
69 f1(i)
70 g(i,i,i)
71 g(i,i,i)
72 g(i,i,i)
73 g(i,i,i)
74 h(i,i,3,i,i)
75 h(i,i,i,2,i,3)
76
77 f()
78 f1(i)
79 f1(i)
80 f1(i)
81 f1(i)
82 g(i,i,i)
83 g(i,i,i)
84 g(i,i,i)
85 g(i,i,i)
86 h(i,i,3,i,i)
87 h(i,i,i,2,i,3)
88
89 def calibrate(self):
90
91 global f,f1,g,h
92
93 # define functions
94 def f():
95 pass
96
97 def f1(x):
98 pass
99
100 def g(a,b,c):
101 return a,b,c
102
103 def h(a,b,c,d=1,e=2,f=3):
104 return d,e,f
105
106 # do calls
107 for i in xrange(self.rounds):
108 pass
109
110###
111
112class BuiltinFunctionCalls(Test):
113
114 version = 0.4
115 operations = 5*(2+5+5+5)
116 rounds = 30000
117
118 def test(self):
119
120 # localize functions
121 f0 = globals
122 f1 = hash
123 f2 = cmp
124 f3 = range
125
126 # do calls
127 for i in xrange(self.rounds):
128
129 f0()
130 f0()
131 f1(i)
132 f1(i)
133 f1(i)
134 f1(i)
135 f1(i)
136 f2(1,2)
137 f2(1,2)
138 f2(1,2)
139 f2(1,2)
140 f2(1,2)
141 f3(1,3,2)
142 f3(1,3,2)
143 f3(1,3,2)
144 f3(1,3,2)
145 f3(1,3,2)
146
147 f0()
148 f0()
149 f1(i)
150 f1(i)
151 f1(i)
152 f1(i)
153 f1(i)
154 f2(1,2)
155 f2(1,2)
156 f2(1,2)
157 f2(1,2)
158 f2(1,2)
159 f3(1,3,2)
160 f3(1,3,2)
161 f3(1,3,2)
162 f3(1,3,2)
163 f3(1,3,2)
164
165 f0()
166 f0()
167 f1(i)
168 f1(i)
169 f1(i)
170 f1(i)
171 f1(i)
172 f2(1,2)
173 f2(1,2)
174 f2(1,2)
175 f2(1,2)
176 f2(1,2)
177 f3(1,3,2)
178 f3(1,3,2)
179 f3(1,3,2)
180 f3(1,3,2)
181 f3(1,3,2)
182
183 f0()
184 f0()
185 f1(i)
186 f1(i)
187 f1(i)
188 f1(i)
189 f1(i)
190 f2(1,2)
191 f2(1,2)
192 f2(1,2)
193 f2(1,2)
194 f2(1,2)
195 f3(1,3,2)
196 f3(1,3,2)
197 f3(1,3,2)
198 f3(1,3,2)
199 f3(1,3,2)
200
201 f0()
202 f0()
203 f1(i)
204 f1(i)
205 f1(i)
206 f1(i)
207 f1(i)
208 f2(1,2)
209 f2(1,2)
210 f2(1,2)
211 f2(1,2)
212 f2(1,2)
213 f3(1,3,2)
214 f3(1,3,2)
215 f3(1,3,2)
216 f3(1,3,2)
217 f3(1,3,2)
218
219 def calibrate(self):
220
221 # localize functions
222 f0 = dir
223 f1 = hash
224 f2 = range
225 f3 = range
226
227 # do calls
228 for i in xrange(self.rounds):
229 pass
230
231###
232
233class PythonMethodCalls(Test):
234
235 version = 0.3
236 operations = 5*(6 + 5 + 4)
237 rounds = 20000
238
239 def test(self):
240
241 class c:
242
243 x = 2
244 s = 'string'
245
246 def f(self):
247
248 return self.x
249
250 def j(self,a,b):
251
252 self.y = a
253 self.t = b
254 return self.y
255
256 def k(self,a,b,c=3):
257
258 self.y = a
259 self.s = b
260 self.t = c
261
262 o = c()
263
264 for i in xrange(self.rounds):
265
266 o.f()
267 o.f()
268 o.f()
269 o.f()
270 o.f()
271 o.f()
272 o.j(i,i)
273 o.j(i,i)
274 o.j(i,2)
275 o.j(i,2)
276 o.j(2,2)
277 o.k(i,i)
278 o.k(i,2)
279 o.k(i,2,3)
280 o.k(i,i,c=4)
281
282 o.f()
283 o.f()
284 o.f()
285 o.f()
286 o.f()
287 o.f()
288 o.j(i,i)
289 o.j(i,i)
290 o.j(i,2)
291 o.j(i,2)
292 o.j(2,2)
293 o.k(i,i)
294 o.k(i,2)
295 o.k(i,2,3)
296 o.k(i,i,c=4)
297
298 o.f()
299 o.f()
300 o.f()
301 o.f()
302 o.f()
303 o.f()
304 o.j(i,i)
305 o.j(i,i)
306 o.j(i,2)
307 o.j(i,2)
308 o.j(2,2)
309 o.k(i,i)
310 o.k(i,2)
311 o.k(i,2,3)
312 o.k(i,i,c=4)
313
314 o.f()
315 o.f()
316 o.f()
317 o.f()
318 o.f()
319 o.f()
320 o.j(i,i)
321 o.j(i,i)
322 o.j(i,2)
323 o.j(i,2)
324 o.j(2,2)
325 o.k(i,i)
326 o.k(i,2)
327 o.k(i,2,3)
328 o.k(i,i,c=4)
329
330 o.f()
331 o.f()
332 o.f()
333 o.f()
334 o.f()
335 o.f()
336 o.j(i,i)
337 o.j(i,i)
338 o.j(i,2)
339 o.j(i,2)
340 o.j(2,2)
341 o.k(i,i)
342 o.k(i,2)
343 o.k(i,2,3)
344 o.k(i,i,c=4)
345
346 def calibrate(self):
347
348 class c:
349
350 x = 2
351 s = 'string'
352
353 def f(self):
354
355 return self.x
356
357 def j(self,a,b):
358
359 self.y = a
360 self.t = b
361
362 def k(self,a,b,c=3):
363
364 self.y = a
365 self.s = b
366 self.t = c
367
368 o = c
369
370 for i in xrange(self.rounds):
371 pass
372
373###
374
375class Recursion(Test):
376
377 version = 0.3
378 operations = 5
379 rounds = 50000
380
381 def test(self):
382
383 global f
384
385 def f(x):
386
387 if x > 1:
388 return f(x-1)
389 return 1
390
391 for i in xrange(self.rounds):
392 f(10)
393 f(10)
394 f(10)
395 f(10)
396 f(10)
397
398 def calibrate(self):
399
400 global f
401
402 def f(x):
403
404 if x > 0:
405 return f(x-1)
406 return 1
407
408 for i in xrange(self.rounds):
409 pass
410