Mercurial > hgrepos > Python > libs > ConfigMix
comparison tests/_perf_lookups.py @ 494:60683361ebed
Test-script for checking the costs of different variable lookup methods
Variant from https://stackoverflow.com/questions/2714573/instance-variables-vs-class-variables-in-python
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Fri, 17 Dec 2021 19:24:54 +0100 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 493:6a0f761ff35b | 494:60683361ebed |
|---|---|
| 1 from __future__ import print_function | |
| 2 import timeit | |
| 3 | |
| 4 setup=''' | |
| 5 XGLOBAL= 5 | |
| 6 class A: | |
| 7 xclass = 5 | |
| 8 def __init__(self): | |
| 9 self.xinstance = 5 | |
| 10 def f1(self): | |
| 11 xlocal = 5 | |
| 12 x = self.xinstance | |
| 13 def f2(self): | |
| 14 xlocal = 5 | |
| 15 x = A.xclass | |
| 16 def f3(self): | |
| 17 xlocal = 5 | |
| 18 x = XGLOBAL | |
| 19 def f4(self): | |
| 20 xlocal = 5 | |
| 21 x = xlocal | |
| 22 def f5(self): | |
| 23 xlocal = 5 | |
| 24 x = self.xclass | |
| 25 a = A() | |
| 26 ''' | |
| 27 num = 300000000 | |
| 28 num = 90000000 | |
| 29 print('access via instance variable: %.3f' % timeit.timeit('a.f1()', setup=setup, number=num) ) | |
| 30 print('access via class variable (via classname): %.3f' % timeit.timeit('a.f2()', setup=setup, number=num) ) | |
| 31 print('access via class variable (via self): %.3f' % timeit.timeit('a.f5()', setup=setup, number=num) ) | |
| 32 print('access via module variable: %.3f' % timeit.timeit('a.f3()', setup=setup, number=num) ) | |
| 33 print('access via local variable: %.3f' % timeit.timeit('a.f4()', setup=setup, number=num) ) |
