mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
### What does this PR do?
Adds benchmark for `[...set]`
### How did you verify your code works?
### Results
**Bun 1.3.6**
```
clk: ~3.77 GHz
cpu: Apple M4 Max
runtime: bun 1.3.6 (arm64-darwin)
benchmark avg (min … max) p75 p99 (min … top 1%)
------------------------------------------- -------------------------------
[...set] - integers (10) 51.70 ns/iter 51.16 ns █▄
(45.17 ns … 121.75 ns) 87.65 ns ▁▁██▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - integers (100) 394.07 ns/iter 394.41 ns █▇▂
(378.73 ns … 443.39 ns) 437.51 ns ▂████▆▄▂▁▁▁▁▂▃▃▄▂▂▁▂▁
[...set] - strings (10) 53.86 ns/iter 53.66 ns █
(50.72 ns … 115.85 ns) 89.37 ns ▃█▆▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - strings (100) 422.12 ns/iter 422.80 ns ▅██▄
(392.35 ns … 977.34 ns) 481.31 ns ▂▂▅████▇▃▂▁▂▃▄▄▃▃▁▁▁▁
[...set] - objects (10) 54.07 ns/iter 54.33 ns █▇
(49.83 ns … 98.49 ns) 87.07 ns ▂██▇▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - objects (100) 446.81 ns/iter 441.72 ns █
(397.71 ns … 954.87 ns) 824.61 ns ▂█▃▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
```
**Bun 1.3.7 canary**
```
clk: ~3.82 GHz
cpu: Apple M4 Max
runtime: bun 1.3.7 (arm64-darwin)
benchmark avg (min … max) p75 p99 (min … top 1%)
------------------------------------------- -------------------------------
[...set] - integers (10) 4.71 ns/iter 4.62 ns █▄
(3.88 ns … 48.91 ns) 11.42 ns ▂██▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - integers (100) 42.52 ns/iter 42.70 ns █
(35.70 ns … 88.03 ns) 74.86 ns ▃█▂██▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - strings (10) 6.02 ns/iter 5.86 ns ▇█
(3.99 ns … 49.43 ns) 8.89 ns ▁▁▁▁▁▂██▆▃▃▂▁▁▁▁▁▁▁▁▁
[...set] - strings (100) 56.81 ns/iter 55.91 ns █
(48.70 ns … 96.89 ns) 88.48 ns ▁▁▃█▇▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - objects (10) 6.15 ns/iter 6.10 ns █▃
(4.14 ns … 66.32 ns) 9.31 ns ▁▁▁▁▂███▆▅▃▂▁▁▁▁▁▁▁▁▁
[...set] - objects (100) 57.47 ns/iter 56.67 ns ▆█
(47.52 ns … 110.06 ns) 93.39 ns ▁▁▃██▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
```
**Node 24.12.0**
```
clk: ~3.30 GHz
cpu: Apple M4 Max
runtime: node 24.12.0 (arm64-darwin)
benchmark avg (min … max) p75 p99 (min … top 1%)
------------------------------------------- -------------------------------
[...set] - integers (10) 28.19 ns/iter 13.03 ns █
(10.87 ns … 9.37 µs) 129.01 ns █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - integers (100) 159.41 ns/iter 96.19 ns █
(80.87 ns … 8.42 µs) 1.98 µs █▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - strings (10) 20.13 ns/iter 13.56 ns █
(10.92 ns … 3.82 µs) 105.83 ns █▅▂▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - strings (100) 138.56 ns/iter 92.29 ns █
(80.63 ns … 10.17 µs) 1.09 µs █▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - objects (10) 16.43 ns/iter 12.40 ns █
(11.07 ns … 5.99 µs) 39.03 ns ▄█▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
[...set] - objects (100) 108.58 ns/iter 97.82 ns █
(80.83 ns … 2.99 µs) 298.93 ns ▂█▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
```
**Summary**
```zig
┌────────────────┬────────────────┬───────────────┬─────────┐
│ Benchmark │ Before (1.3.6) │ After (1.3.7) │ Speedup │
├────────────────┼────────────────┼───────────────┼─────────┤
│ integers (10) │ 51.70 ns │ 4.71 ns │ 11.0x │
├────────────────┼────────────────┼───────────────┼─────────┤
│ integers (100) │ 394.07 ns │ 42.52 ns │ 9.3x │
├────────────────┼────────────────┼───────────────┼─────────┤
│ strings (10) │ 53.86 ns │ 6.02 ns │ 8.9x │
├────────────────┼────────────────┼───────────────┼─────────┤
│ strings (100) │ 422.12 ns │ 56.81 ns │ 7.4x │
├────────────────┼────────────────┼───────────────┼─────────┤
│ objects (10) │ 54.07 ns │ 6.15 ns │ 8.8x │
├────────────────┼────────────────┼───────────────┼─────────┤
│ objects (100) │ 446.81 ns │ 57.47 ns │ 7.8x │
└────────────────┴────────────────┴───────────────┴─────────┘
```