You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.3 KiB
63 lines
1.3 KiB
# Benchmarks of Starlark execution
|
|
|
|
def bench_range_construction(b):
|
|
for _ in range(b.n):
|
|
range(200)
|
|
|
|
def bench_range_iteration(b):
|
|
for _ in range(b.n):
|
|
for x in range(200):
|
|
pass
|
|
|
|
# Make a 2-level call tree of 100 * 100 calls.
|
|
def bench_calling(b):
|
|
list = range(100)
|
|
|
|
def g():
|
|
for x in list:
|
|
pass
|
|
|
|
def f():
|
|
for x in list:
|
|
g()
|
|
|
|
for _ in range(b.n):
|
|
f()
|
|
|
|
# Measure overhead of calling a trivial built-in method.
|
|
emptydict = {}
|
|
range1000 = range(1000)
|
|
|
|
def bench_builtin_method(b):
|
|
for _ in range(b.n):
|
|
for _ in range1000:
|
|
emptydict.get(None)
|
|
|
|
def bench_int(b):
|
|
for _ in range(b.n):
|
|
a = 0
|
|
for _ in range1000:
|
|
a += 1
|
|
|
|
def bench_bigint(b):
|
|
for _ in range(b.n):
|
|
a = 1 << 31 # maxint32 + 1
|
|
for _ in range1000:
|
|
a += 1
|
|
|
|
def bench_gauss(b):
|
|
# Sum of arithmetic series. All results fit in int32.
|
|
for _ in range(b.n):
|
|
acc = 0
|
|
for x in range(92000):
|
|
acc += x
|
|
|
|
def bench_mix(b):
|
|
"Benchmark of a simple mix of computation (for, if, arithmetic, comprehension)."
|
|
for _ in range(b.n):
|
|
x = 0
|
|
for i in range(50):
|
|
if i:
|
|
x += 1
|
|
a = [x for x in range(i)]
|