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:
parent
b0851e5949
commit
e53d2197e4
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
Loading…
Reference in New Issue