bench: Add test for function call overhead.

For a trivial operation, calling a function is 5 times slower than doing
operation inline.
This commit is contained in:
Paul Sokolovsky 2014-06-19 03:20:34 +03:00
parent b0851e5949
commit e53d2197e4
3 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,9 @@
# Function call overhead test
# Establish a baseline for performing a trivial operation inline
import bench
def test(num):
for i in iter(range(num)):
a = i + 1
bench.run(test)

View File

@ -0,0 +1,12 @@
# Function call overhead test
# Perform the same trivial operation as global function call
import bench
def f(x):
return x + 1
def test(num):
for i in iter(range(num)):
a = f(i)
bench.run(test)

View File

@ -0,0 +1,16 @@
# Function call overhead test
# Perform the same trivial operation as calling function, cached in a
# local variable. This is commonly known optimization for overly dynamic
# languages (the idea is to cut on symbolic look up overhead, as local
# variables are accessed by offset, not by name)
import bench
def f(x):
return x + 1
def test(num):
f_ = f
for i in iter(range(num)):
a = f_(i)
bench.run(test)