]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Tools / pybench / Calls.py
1 from pybench import Test
2
3 class PythonFunctionCalls(Test):
4
5 version = 2.0
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
112 class ComplexPythonFunctionCalls(Test):
113
114 version = 2.0
115 operations = 4*5
116 rounds = 100000
117
118 def test(self):
119
120 # define functions
121 def f(a,b,c,d=1,e=2,f=3):
122 return f
123
124 args = 1,2
125 kwargs = dict(c=3,d=4,e=5)
126
127 # do calls
128 for i in xrange(self.rounds):
129 f(a=i,b=i,c=i)
130 f(f=i,e=i,d=i,c=2,b=i,a=3)
131 f(1,b=i,**kwargs)
132 f(*args,**kwargs)
133
134 f(a=i,b=i,c=i)
135 f(f=i,e=i,d=i,c=2,b=i,a=3)
136 f(1,b=i,**kwargs)
137 f(*args,**kwargs)
138
139 f(a=i,b=i,c=i)
140 f(f=i,e=i,d=i,c=2,b=i,a=3)
141 f(1,b=i,**kwargs)
142 f(*args,**kwargs)
143
144 f(a=i,b=i,c=i)
145 f(f=i,e=i,d=i,c=2,b=i,a=3)
146 f(1,b=i,**kwargs)
147 f(*args,**kwargs)
148
149 f(a=i,b=i,c=i)
150 f(f=i,e=i,d=i,c=2,b=i,a=3)
151 f(1,b=i,**kwargs)
152 f(*args,**kwargs)
153
154
155 def calibrate(self):
156
157 # define functions
158 def f(a,b,c,d=1,e=2,f=3):
159 return f
160
161 args = 1,2
162 kwargs = dict(c=3,d=4,e=5)
163
164 # do calls
165 for i in xrange(self.rounds):
166 pass
167
168 ###
169
170 class BuiltinFunctionCalls(Test):
171
172 version = 2.0
173 operations = 5*(2+5+5+5)
174 rounds = 60000
175
176 def test(self):
177
178 # localize functions
179 f0 = globals
180 f1 = hash
181 f2 = cmp
182 f3 = range
183
184 # do calls
185 for i in xrange(self.rounds):
186
187 f0()
188 f0()
189 f1(i)
190 f1(i)
191 f1(i)
192 f1(i)
193 f1(i)
194 f2(1,2)
195 f2(1,2)
196 f2(1,2)
197 f2(1,2)
198 f2(1,2)
199 f3(1,3,2)
200 f3(1,3,2)
201 f3(1,3,2)
202 f3(1,3,2)
203 f3(1,3,2)
204
205 f0()
206 f0()
207 f1(i)
208 f1(i)
209 f1(i)
210 f1(i)
211 f1(i)
212 f2(1,2)
213 f2(1,2)
214 f2(1,2)
215 f2(1,2)
216 f2(1,2)
217 f3(1,3,2)
218 f3(1,3,2)
219 f3(1,3,2)
220 f3(1,3,2)
221 f3(1,3,2)
222
223 f0()
224 f0()
225 f1(i)
226 f1(i)
227 f1(i)
228 f1(i)
229 f1(i)
230 f2(1,2)
231 f2(1,2)
232 f2(1,2)
233 f2(1,2)
234 f2(1,2)
235 f3(1,3,2)
236 f3(1,3,2)
237 f3(1,3,2)
238 f3(1,3,2)
239 f3(1,3,2)
240
241 f0()
242 f0()
243 f1(i)
244 f1(i)
245 f1(i)
246 f1(i)
247 f1(i)
248 f2(1,2)
249 f2(1,2)
250 f2(1,2)
251 f2(1,2)
252 f2(1,2)
253 f3(1,3,2)
254 f3(1,3,2)
255 f3(1,3,2)
256 f3(1,3,2)
257 f3(1,3,2)
258
259 f0()
260 f0()
261 f1(i)
262 f1(i)
263 f1(i)
264 f1(i)
265 f1(i)
266 f2(1,2)
267 f2(1,2)
268 f2(1,2)
269 f2(1,2)
270 f2(1,2)
271 f3(1,3,2)
272 f3(1,3,2)
273 f3(1,3,2)
274 f3(1,3,2)
275 f3(1,3,2)
276
277 def calibrate(self):
278
279 # localize functions
280 f0 = dir
281 f1 = hash
282 f2 = range
283 f3 = range
284
285 # do calls
286 for i in xrange(self.rounds):
287 pass
288
289 ###
290
291 class PythonMethodCalls(Test):
292
293 version = 2.0
294 operations = 5*(6 + 5 + 4)
295 rounds = 30000
296
297 def test(self):
298
299 class c:
300
301 x = 2
302 s = 'string'
303
304 def f(self):
305
306 return self.x
307
308 def j(self,a,b):
309
310 self.y = a
311 self.t = b
312 return self.y
313
314 def k(self,a,b,c=3):
315
316 self.y = a
317 self.s = b
318 self.t = c
319
320 o = c()
321
322 for i in xrange(self.rounds):
323
324 o.f()
325 o.f()
326 o.f()
327 o.f()
328 o.f()
329 o.f()
330 o.j(i,i)
331 o.j(i,i)
332 o.j(i,2)
333 o.j(i,2)
334 o.j(2,2)
335 o.k(i,i)
336 o.k(i,2)
337 o.k(i,2,3)
338 o.k(i,i,c=4)
339
340 o.f()
341 o.f()
342 o.f()
343 o.f()
344 o.f()
345 o.f()
346 o.j(i,i)
347 o.j(i,i)
348 o.j(i,2)
349 o.j(i,2)
350 o.j(2,2)
351 o.k(i,i)
352 o.k(i,2)
353 o.k(i,2,3)
354 o.k(i,i,c=4)
355
356 o.f()
357 o.f()
358 o.f()
359 o.f()
360 o.f()
361 o.f()
362 o.j(i,i)
363 o.j(i,i)
364 o.j(i,2)
365 o.j(i,2)
366 o.j(2,2)
367 o.k(i,i)
368 o.k(i,2)
369 o.k(i,2,3)
370 o.k(i,i,c=4)
371
372 o.f()
373 o.f()
374 o.f()
375 o.f()
376 o.f()
377 o.f()
378 o.j(i,i)
379 o.j(i,i)
380 o.j(i,2)
381 o.j(i,2)
382 o.j(2,2)
383 o.k(i,i)
384 o.k(i,2)
385 o.k(i,2,3)
386 o.k(i,i,c=4)
387
388 o.f()
389 o.f()
390 o.f()
391 o.f()
392 o.f()
393 o.f()
394 o.j(i,i)
395 o.j(i,i)
396 o.j(i,2)
397 o.j(i,2)
398 o.j(2,2)
399 o.k(i,i)
400 o.k(i,2)
401 o.k(i,2,3)
402 o.k(i,i,c=4)
403
404 def calibrate(self):
405
406 class c:
407
408 x = 2
409 s = 'string'
410
411 def f(self):
412
413 return self.x
414
415 def j(self,a,b):
416
417 self.y = a
418 self.t = b
419
420 def k(self,a,b,c=3):
421
422 self.y = a
423 self.s = b
424 self.t = c
425
426 o = c
427
428 for i in xrange(self.rounds):
429 pass
430
431 ###
432
433 class Recursion(Test):
434
435 version = 2.0
436 operations = 5
437 rounds = 100000
438
439 def test(self):
440
441 global f
442
443 def f(x):
444
445 if x > 1:
446 return f(x-1)
447 return 1
448
449 for i in xrange(self.rounds):
450 f(10)
451 f(10)
452 f(10)
453 f(10)
454 f(10)
455
456 def calibrate(self):
457
458 global f
459
460 def f(x):
461
462 if x > 0:
463 return f(x-1)
464 return 1
465
466 for i in xrange(self.rounds):
467 pass
468
469
470 ### Test to make Fredrik happy...
471
472 if __name__ == '__main__':
473 import timeit
474 if 0:
475 timeit.TestClass = PythonFunctionCalls
476 timeit.main(['-s', 'test = TestClass(); test.rounds = 1000',
477 'test.test()'])
478 else:
479 setup = """\
480 global f,f1,g,h
481
482 # define functions
483 def f():
484 pass
485
486 def f1(x):
487 pass
488
489 def g(a,b,c):
490 return a,b,c
491
492 def h(a,b,c,d=1,e=2,f=3):
493 return d,e,f
494
495 i = 1
496 """
497 test = """\
498 f()
499 f1(i)
500 f1(i)
501 f1(i)
502 f1(i)
503 g(i,i,i)
504 g(i,i,i)
505 g(i,i,i)
506 g(i,i,i)
507 h(i,i,3,i,i)
508 h(i,i,i,2,i,3)
509
510 f()
511 f1(i)
512 f1(i)
513 f1(i)
514 f1(i)
515 g(i,i,i)
516 g(i,i,i)
517 g(i,i,i)
518 g(i,i,i)
519 h(i,i,3,i,i)
520 h(i,i,i,2,i,3)
521
522 f()
523 f1(i)
524 f1(i)
525 f1(i)
526 f1(i)
527 g(i,i,i)
528 g(i,i,i)
529 g(i,i,i)
530 g(i,i,i)
531 h(i,i,3,i,i)
532 h(i,i,i,2,i,3)
533
534 f()
535 f1(i)
536 f1(i)
537 f1(i)
538 f1(i)
539 g(i,i,i)
540 g(i,i,i)
541 g(i,i,i)
542 g(i,i,i)
543 h(i,i,3,i,i)
544 h(i,i,i,2,i,3)
545
546 f()
547 f1(i)
548 f1(i)
549 f1(i)
550 f1(i)
551 g(i,i,i)
552 g(i,i,i)
553 g(i,i,i)
554 g(i,i,i)
555 h(i,i,3,i,i)
556 h(i,i,i,2,i,3)
557 """
558
559 timeit.main(['-s', setup,
560 test])