1# Benchmarks of Starlark execution 2 3def 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 11 12# Make a 2-level call tree of 100 * 100 calls. 13def bench_calling(b): 14 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 24 for _ in range(b.n): 25 f() 26 27# Measure overhead of calling a trivial built-in method. 28emptydict = {} 29range1000 = range(1000) 30 31def bench_builtin_method(b): 32 for _ in range(b.n): 33 for _ in range1000: 34 emptydict.get(None) 35 36def bench_int(b): 37 for _ in range(b.n): 38 a = 0 39 for _ in range1000: 40 a += 1 41 42def bench_bigint(b): 43 for _ in range(b.n): 44 a = 1 << 31 # maxint32 + 1 45 for _ in range1000: 46 a += 1 47 48def bench_gauss(b): 49 # Sum of arithmetic series. All results fit in int32. 50 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)] 63