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
9
tests/bench/funcall-1-inline.py
Normal file
9
tests/bench/funcall-1-inline.py
Normal 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)
|
12
tests/bench/funcall-2-funcall.py
Normal file
12
tests/bench/funcall-2-funcall.py
Normal 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)
|
16
tests/bench/funcall-3-funcall-local.py
Normal file
16
tests/bench/funcall-3-funcall-local.py
Normal 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)
|
Loading…
x
Reference in New Issue
Block a user