Alan Donovan | e3deafe | 2018-10-23 11:05:09 -0400 | [diff] [blame] | 1 | # Benchmarks of Starlark execution |
Alan Donovan | 312d1a5 | 2017-10-02 10:10:28 -0400 | [diff] [blame] | 2 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 3 | def bench_range_construction(b): |
| 4 | for _ in range(b.n): |
| 5 | range(200) |
| 6 | |
| 7 | def bench_range_iteration(b): |
| 8 | for _ in range(b.n): |
| 9 | for x in range(200): |
| 10 | pass |
Alan Donovan | 312d1a5 | 2017-10-02 10:10:28 -0400 | [diff] [blame] | 11 | |
| 12 | # Make a 2-level call tree of 100 * 100 calls. |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 13 | def bench_calling(b): |
alandonovan | 4eb7695 | 2019-02-19 15:21:00 -0500 | [diff] [blame] | 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 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 24 | for _ in range(b.n): |
| 25 | f() |
Alan Donovan | 312d1a5 | 2017-10-02 10:10:28 -0400 | [diff] [blame] | 26 | |
| 27 | # Measure overhead of calling a trivial built-in method. |
| 28 | emptydict = {} |
| 29 | range1000 = range(1000) |
alandonovan | 4eb7695 | 2019-02-19 15:21:00 -0500 | [diff] [blame] | 30 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 31 | def bench_builtin_method(b): |
| 32 | for _ in range(b.n): |
| 33 | for _ in range1000: |
| 34 | emptydict.get(None) |
Edward McFarlane | d50186b | 2019-02-24 19:44:57 +0000 | [diff] [blame] | 35 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 36 | def bench_int(b): |
| 37 | for _ in range(b.n): |
| 38 | a = 0 |
| 39 | for _ in range1000: |
| 40 | a += 1 |
Edward McFarlane | d50186b | 2019-02-24 19:44:57 +0000 | [diff] [blame] | 41 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 42 | def bench_bigint(b): |
| 43 | for _ in range(b.n): |
| 44 | a = 1 << 31 # maxint32 + 1 |
| 45 | for _ in range1000: |
| 46 | a += 1 |
alandonovan | c6daab6 | 2020-06-17 14:27:56 -0400 | [diff] [blame] | 47 | |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 48 | def bench_gauss(b): |
alandonovan | c6daab6 | 2020-06-17 14:27:56 -0400 | [diff] [blame] | 49 | # Sum of arithmetic series. All results fit in int32. |
alandonovan | a783991 | 2020-12-02 13:36:32 -0500 | [diff] [blame] | 50 | for _ in range(b.n): |
| 51 | acc = 0 |
| 52 | for x in range(92000): |
| 53 | acc += x |
| 54 | |
| 55 | def 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)] |