blob: b02868d9ce993b3db5ffee043d7ce8b2df62aa87 [file] [log] [blame]
Alan Donovane3deafe2018-10-23 11:05:09 -04001# Benchmarks of Starlark execution
Alan Donovan312d1a52017-10-02 10:10:28 -04002
alandonovana7839912020-12-02 13:36:32 -05003def bench_range_construction(b):
4 for _ in range(b.n):
5 range(200)
6
7def bench_range_iteration(b):
8 for _ in range(b.n):
9 for x in range(200):
10 pass
Alan Donovan312d1a52017-10-02 10:10:28 -040011
12# Make a 2-level call tree of 100 * 100 calls.
alandonovana7839912020-12-02 13:36:32 -050013def bench_calling(b):
alandonovan4eb76952019-02-19 15:21:00 -050014 list = range(100)
15
16 def g():
17 for x in list:
18 pass
19
20 def f():
21 for x in list:
22 g()
23
alandonovana7839912020-12-02 13:36:32 -050024 for _ in range(b.n):
25 f()
Alan Donovan312d1a52017-10-02 10:10:28 -040026
27# Measure overhead of calling a trivial built-in method.
28emptydict = {}
29range1000 = range(1000)
alandonovan4eb76952019-02-19 15:21:00 -050030
alandonovana7839912020-12-02 13:36:32 -050031def bench_builtin_method(b):
32 for _ in range(b.n):
33 for _ in range1000:
34 emptydict.get(None)
Edward McFarlaned50186b2019-02-24 19:44:57 +000035
alandonovana7839912020-12-02 13:36:32 -050036def bench_int(b):
37 for _ in range(b.n):
38 a = 0
39 for _ in range1000:
40 a += 1
Edward McFarlaned50186b2019-02-24 19:44:57 +000041
alandonovana7839912020-12-02 13:36:32 -050042def bench_bigint(b):
43 for _ in range(b.n):
44 a = 1 << 31 # maxint32 + 1
45 for _ in range1000:
46 a += 1
alandonovanc6daab62020-06-17 14:27:56 -040047
alandonovana7839912020-12-02 13:36:32 -050048def bench_gauss(b):
alandonovanc6daab62020-06-17 14:27:56 -040049 # Sum of arithmetic series. All results fit in int32.
alandonovana7839912020-12-02 13:36:32 -050050 for _ in range(b.n):
51 acc = 0
52 for x in range(92000):
53 acc += x
54
55def bench_mix(b):
56 "Benchmark of a simple mix of computation (for, if, arithmetic, comprehension)."
57 for _ in range(b.n):
58 x = 0
59 for i in range(50):
60 if i:
61 x += 1
62 a = [x for x in range(i)]