Mercurial > hgrepos > Python > libs > ConfigMix
changeset 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 | 6a0f761ff35b |
| children | 3f0c932588fc |
| files | tests/_perf_lookups.py |
| diffstat | 1 files changed, 33 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/_perf_lookups.py Fri Dec 17 19:24:54 2021 +0100 @@ -0,0 +1,33 @@ +from __future__ import print_function +import timeit + +setup=''' +XGLOBAL= 5 +class A: + xclass = 5 + def __init__(self): + self.xinstance = 5 + def f1(self): + xlocal = 5 + x = self.xinstance + def f2(self): + xlocal = 5 + x = A.xclass + def f3(self): + xlocal = 5 + x = XGLOBAL + def f4(self): + xlocal = 5 + x = xlocal + def f5(self): + xlocal = 5 + x = self.xclass +a = A() +''' +num = 300000000 +num = 90000000 +print('access via instance variable: %.3f' % timeit.timeit('a.f1()', setup=setup, number=num) ) +print('access via class variable (via classname): %.3f' % timeit.timeit('a.f2()', setup=setup, number=num) ) +print('access via class variable (via self): %.3f' % timeit.timeit('a.f5()', setup=setup, number=num) ) +print('access via module variable: %.3f' % timeit.timeit('a.f3()', setup=setup, number=num) ) +print('access via local variable: %.3f' % timeit.timeit('a.f4()', setup=setup, number=num) )
