from pybench import Test | |
class PythonFunctionCalls(Test): | |
version = 2.0 | |
operations = 5*(1+4+4+2) | |
rounds = 60000 | |
def test(self): | |
global f,f1,g,h | |
# define functions | |
def f(): | |
pass | |
def f1(x): | |
pass | |
def g(a,b,c): | |
return a,b,c | |
def h(a,b,c,d=1,e=2,f=3): | |
return d,e,f | |
# do calls | |
for i in xrange(self.rounds): | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
def calibrate(self): | |
global f,f1,g,h | |
# define functions | |
def f(): | |
pass | |
def f1(x): | |
pass | |
def g(a,b,c): | |
return a,b,c | |
def h(a,b,c,d=1,e=2,f=3): | |
return d,e,f | |
# do calls | |
for i in xrange(self.rounds): | |
pass | |
### | |
class ComplexPythonFunctionCalls(Test): | |
version = 2.0 | |
operations = 4*5 | |
rounds = 100000 | |
def test(self): | |
# define functions | |
def f(a,b,c,d=1,e=2,f=3): | |
return f | |
args = 1,2 | |
kwargs = dict(c=3,d=4,e=5) | |
# do calls | |
for i in xrange(self.rounds): | |
f(a=i,b=i,c=i) | |
f(f=i,e=i,d=i,c=2,b=i,a=3) | |
f(1,b=i,**kwargs) | |
f(*args,**kwargs) | |
f(a=i,b=i,c=i) | |
f(f=i,e=i,d=i,c=2,b=i,a=3) | |
f(1,b=i,**kwargs) | |
f(*args,**kwargs) | |
f(a=i,b=i,c=i) | |
f(f=i,e=i,d=i,c=2,b=i,a=3) | |
f(1,b=i,**kwargs) | |
f(*args,**kwargs) | |
f(a=i,b=i,c=i) | |
f(f=i,e=i,d=i,c=2,b=i,a=3) | |
f(1,b=i,**kwargs) | |
f(*args,**kwargs) | |
f(a=i,b=i,c=i) | |
f(f=i,e=i,d=i,c=2,b=i,a=3) | |
f(1,b=i,**kwargs) | |
f(*args,**kwargs) | |
def calibrate(self): | |
# define functions | |
def f(a,b,c,d=1,e=2,f=3): | |
return f | |
args = 1,2 | |
kwargs = dict(c=3,d=4,e=5) | |
# do calls | |
for i in xrange(self.rounds): | |
pass | |
### | |
class BuiltinFunctionCalls(Test): | |
version = 2.0 | |
operations = 5*(2+5+5+5) | |
rounds = 60000 | |
def test(self): | |
# localize functions | |
f0 = globals | |
f1 = hash | |
f2 = cmp | |
f3 = range | |
# do calls | |
for i in xrange(self.rounds): | |
f0() | |
f0() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f0() | |
f0() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f0() | |
f0() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f0() | |
f0() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f0() | |
f0() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f2(1,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
f3(1,3,2) | |
def calibrate(self): | |
# localize functions | |
f0 = dir | |
f1 = hash | |
f2 = range | |
f3 = range | |
# do calls | |
for i in xrange(self.rounds): | |
pass | |
### | |
class PythonMethodCalls(Test): | |
version = 2.0 | |
operations = 5*(6 + 5 + 4) | |
rounds = 30000 | |
def test(self): | |
class c: | |
x = 2 | |
s = 'string' | |
def f(self): | |
return self.x | |
def j(self,a,b): | |
self.y = a | |
self.t = b | |
return self.y | |
def k(self,a,b,c=3): | |
self.y = a | |
self.s = b | |
self.t = c | |
o = c() | |
for i in xrange(self.rounds): | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.j(i,i) | |
o.j(i,i) | |
o.j(i,2) | |
o.j(i,2) | |
o.j(2,2) | |
o.k(i,i) | |
o.k(i,2) | |
o.k(i,2,3) | |
o.k(i,i,c=4) | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.j(i,i) | |
o.j(i,i) | |
o.j(i,2) | |
o.j(i,2) | |
o.j(2,2) | |
o.k(i,i) | |
o.k(i,2) | |
o.k(i,2,3) | |
o.k(i,i,c=4) | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.j(i,i) | |
o.j(i,i) | |
o.j(i,2) | |
o.j(i,2) | |
o.j(2,2) | |
o.k(i,i) | |
o.k(i,2) | |
o.k(i,2,3) | |
o.k(i,i,c=4) | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.j(i,i) | |
o.j(i,i) | |
o.j(i,2) | |
o.j(i,2) | |
o.j(2,2) | |
o.k(i,i) | |
o.k(i,2) | |
o.k(i,2,3) | |
o.k(i,i,c=4) | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.f() | |
o.j(i,i) | |
o.j(i,i) | |
o.j(i,2) | |
o.j(i,2) | |
o.j(2,2) | |
o.k(i,i) | |
o.k(i,2) | |
o.k(i,2,3) | |
o.k(i,i,c=4) | |
def calibrate(self): | |
class c: | |
x = 2 | |
s = 'string' | |
def f(self): | |
return self.x | |
def j(self,a,b): | |
self.y = a | |
self.t = b | |
def k(self,a,b,c=3): | |
self.y = a | |
self.s = b | |
self.t = c | |
o = c | |
for i in xrange(self.rounds): | |
pass | |
### | |
class Recursion(Test): | |
version = 2.0 | |
operations = 5 | |
rounds = 100000 | |
def test(self): | |
global f | |
def f(x): | |
if x > 1: | |
return f(x-1) | |
return 1 | |
for i in xrange(self.rounds): | |
f(10) | |
f(10) | |
f(10) | |
f(10) | |
f(10) | |
def calibrate(self): | |
global f | |
def f(x): | |
if x > 0: | |
return f(x-1) | |
return 1 | |
for i in xrange(self.rounds): | |
pass | |
### Test to make Fredrik happy... | |
if __name__ == '__main__': | |
import timeit | |
if 0: | |
timeit.TestClass = PythonFunctionCalls | |
timeit.main(['-s', 'test = TestClass(); test.rounds = 1000', | |
'test.test()']) | |
else: | |
setup = """\ | |
global f,f1,g,h | |
# define functions | |
def f(): | |
pass | |
def f1(x): | |
pass | |
def g(a,b,c): | |
return a,b,c | |
def h(a,b,c,d=1,e=2,f=3): | |
return d,e,f | |
i = 1 | |
""" | |
test = """\ | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
f() | |
f1(i) | |
f1(i) | |
f1(i) | |
f1(i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
g(i,i,i) | |
h(i,i,3,i,i) | |
h(i,i,i,2,i,3) | |
""" | |
timeit.main(['-s', setup, | |
test]) |