Skip to content

Commit 7bf2431

Browse files
committed
add latest bench description
1 parent dcaebf5 commit 7bf2431

2 files changed

Lines changed: 307 additions & 0 deletions

File tree

‎bench/README.md‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,40 @@ bench/
112112
benchmarks/ # 25 benchmark directories
113113
simd/ # SIMD benchmark programs
114114
```
115+
116+
## Latest Results (2026-02-10)
117+
118+
Apple M4 Pro, 48GB RAM, macOS 15. hyperfine 5 runs + 2 warmup.
119+
All times in milliseconds. These are **cold start** measurements (process
120+
launch to exit) — languages with heavy runtimes (JVM, V8) pay startup cost.
121+
122+
| Benchmark | CW | Python | Ruby | Node | Java* | C | Zig | TinyGo |
123+
|----------------------|------|--------|------|------|-------|-----|-----|--------|
124+
| fib_recursive | 17.6 | 19.6 | 36.3 | 24.8 | 20.9 | 2.0 | 2.6 | 2.1 |
125+
| fib_loop | 2.9 | 13.4 | 30.3 | 21.6 | 20.4 | 2.1 | 1.5 | 2.3 |
126+
| tak | 8.9 | 15.7 | 33.4 | 23.6 | 19.2 | 3.6 | 0.7 | 2.4 |
127+
| arith_loop | 5.8 | 61.2 | 54.5 | 25.0 | 22.1 | 0.7 | 2.1 | 1.4 |
128+
| map_filter_reduce | 5.7 | 13.2 | 33.9 | 29.1 | 19.7 | 1.4 | 1.7 | 2.1 |
129+
| vector_ops | 8.1 | 13.6 | 31.7 | 21.7 | 22.3 | 1.4 | 1.4 | 2.2 |
130+
| map_ops | 4.4 | 12.2 | 32.1 | 23.2 | 22.1 | 1.6 | 1.5 | 2.8 |
131+
| list_build | 4.6 | 15.3 | 31.9 | 22.1 | 22.0 | 3.1 | 1.6 | 2.6 |
132+
| sieve | 5.5 | 12.9 | 32.9 | 22.2 | 24.0 | 1.6 | 1.7 | 2.1 |
133+
| nqueens | 15.3 | 15.0 | 50.1 | 23.9 | 21.5 | 1.9 | 1.5 | 2.2 |
134+
| atom_swap | 5.6 | 12.8 | 31.9 | 22.7 | 21.2 | 1.8 | 1.4 | 2.6 |
135+
| gc_stress | 29.2 | 27.1 | 38.6 | 23.7 | 31.5 | 2.3 | --- | 19.6 |
136+
| lazy_chain | 6.3 | 15.1 | 31.4 | 22.5 | 20.2 | 1.3 | 1.8 | 2.2 |
137+
| transduce | 7.4 | 11.7 | 31.4 | 22.0 | 20.3 | 1.5 | 1.4 | 3.2 |
138+
| keyword_lookup | 11.1 | 18.2 | 34.3 | 22.8 | 24.0 | 2.1 | 2.4 | 4.3 |
139+
| protocol_dispatch | 4.5 | 13.7 | 30.3 | 22.4 | 20.5 | 1.4 | 1.4 | 2.3 |
140+
| nested_update | 10.9 | 12.3 | 30.8 | 22.5 | 22.3 | 1.7 | 1.4 | 2.7 |
141+
| string_ops | 24.5 | 25.6 | 37.2 | 24.5 | 24.1 | 5.4 | 1.8 | 2.1 |
142+
| multimethod_dispatch | 7.2 | 14.7 | 30.7 | 22.0 | 22.5 | 1.3 | 1.7 | 2.4 |
143+
| real_workload | 11.0 | 14.9 | 34.8 | 24.0 | 23.8 | 1.6 | 4.5 | 2.0 |
144+
145+
CW wins vs Java: 20/20, vs Python: 18/20, vs Ruby: 20/20, vs Node: 20/20.
146+
147+
\* Java times are dominated by JVM startup (~20ms). Warm JVM execution
148+
is significantly faster. C/Zig/TinyGo are native-compiled (AOT) baselines.
149+
150+
Note: gc_stress Zig value (414.6ms) omitted — Zig benchmark uses
151+
`std.AutoArrayHashMap` which is not comparable to GC-managed collections.

‎bench/cross-lang-latest.yaml‎

Lines changed: 270 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
# Cross-language benchmark comparison
2+
# Generated: 2026-02-10T08:49:02+09:00
3+
4+
env:
5+
cpu: Apple M4 Pro
6+
ram: 48 GB
7+
os: Darwin 25.2.0
8+
tool: hyperfine
9+
runs: 5
10+
warmup: 2
11+
12+
date: "2026-02-10"
13+
14+
benchmarks:
15+
fib_recursive:
16+
cold:
17+
cw: 17.6
18+
c: 2.0
19+
zig: 2.6
20+
java: 20.9
21+
tgo: 2.1
22+
py: 19.6
23+
rb: 36.3
24+
js: 24.8
25+
bb: 30.1
26+
fib_loop:
27+
cold:
28+
cw: 2.9
29+
c: 2.1
30+
zig: 1.5
31+
java: 20.4
32+
tgo: 2.3
33+
py: 13.4
34+
rb: 30.3
35+
js: 21.6
36+
bb: 10.2
37+
tak:
38+
cold:
39+
cw: 8.9
40+
c: 3.6
41+
zig: 0.7
42+
java: 19.2
43+
tgo: 2.4
44+
py: 15.7
45+
rb: 33.4
46+
js: 23.6
47+
bb: 18.0
48+
arith_loop:
49+
cold:
50+
cw: 5.8
51+
c: 0.7
52+
zig: 2.1
53+
java: 22.1
54+
tgo: 1.4
55+
py: 61.2
56+
rb: 54.5
57+
js: 25.0
58+
bb: 77.3
59+
map_filter_reduce:
60+
cold:
61+
cw: 5.7
62+
c: 1.4
63+
zig: 1.7
64+
java: 19.7
65+
tgo: 2.1
66+
py: 13.2
67+
rb: 33.9
68+
js: 29.1
69+
bb: 17.6
70+
vector_ops:
71+
cold:
72+
cw: 8.1
73+
c: 1.4
74+
zig: 1.4
75+
java: 22.3
76+
tgo: 2.2
77+
py: 13.6
78+
rb: 31.7
79+
js: 21.7
80+
bb: 17.9
81+
map_ops:
82+
cold:
83+
cw: 4.4
84+
c: 1.6
85+
zig: 1.5
86+
java: 22.1
87+
tgo: 2.8
88+
py: 12.2
89+
rb: 32.1
90+
js: 23.2
91+
bb: 16.6
92+
list_build:
93+
cold:
94+
cw: 4.6
95+
c: 3.1
96+
zig: 1.6
97+
java: 22.0
98+
tgo: 2.6
99+
py: 15.3
100+
rb: 31.9
101+
js: 22.1
102+
bb: 14.7
103+
sieve:
104+
cold:
105+
cw: 5.5
106+
c: 1.6
107+
zig: 1.7
108+
java: 24.0
109+
tgo: 2.1
110+
py: 12.9
111+
rb: 32.9
112+
js: 22.2
113+
bb: 17.2
114+
nqueens:
115+
cold:
116+
cw: 15.3
117+
c: 1.9
118+
zig: 1.5
119+
java: 21.5
120+
tgo: 2.2
121+
py: 15.0
122+
rb: 50.1
123+
js: 23.9
124+
bb: 24.9
125+
atom_swap:
126+
cold:
127+
cw: 5.6
128+
c: 1.8
129+
zig: 1.4
130+
java: 21.2
131+
tgo: 2.6
132+
py: 12.8
133+
rb: 31.9
134+
js: 22.7
135+
bb: 15.7
136+
gc_stress:
137+
cold:
138+
cw: 29.2
139+
c: 2.3
140+
zig: 414.6
141+
java: 31.5
142+
tgo: 19.6
143+
py: 27.1
144+
rb: 38.6
145+
js: 23.7
146+
bb: 35.4
147+
lazy_chain:
148+
cold:
149+
cw: 6.3
150+
c: 1.3
151+
zig: 1.8
152+
java: 20.2
153+
tgo: 2.2
154+
py: 15.1
155+
rb: 31.4
156+
js: 22.5
157+
bb: 17.1
158+
transduce:
159+
cold:
160+
cw: 7.4
161+
c: 1.5
162+
zig: 1.4
163+
java: 20.3
164+
tgo: 3.2
165+
py: 11.7
166+
rb: 31.4
167+
js: 22.0
168+
bb: 16.0
169+
keyword_lookup:
170+
cold:
171+
cw: 11.1
172+
c: 2.1
173+
zig: 2.4
174+
java: 24.0
175+
tgo: 4.3
176+
py: 18.2
177+
rb: 34.3
178+
js: 22.8
179+
bb: 19.7
180+
protocol_dispatch:
181+
cold:
182+
cw: 4.5
183+
c: 1.4
184+
zig: 1.4
185+
java: 20.5
186+
tgo: 2.3
187+
py: 13.7
188+
rb: 30.3
189+
js: 22.4
190+
nested_update:
191+
cold:
192+
cw: 10.9
193+
c: 1.7
194+
zig: 1.4
195+
java: 22.3
196+
tgo: 2.7
197+
py: 12.3
198+
rb: 30.8
199+
js: 22.5
200+
bb: 16.3
201+
string_ops:
202+
cold:
203+
cw: 24.5
204+
c: 5.4
205+
zig: 1.8
206+
java: 24.1
207+
tgo: 2.1
208+
py: 25.6
209+
rb: 37.2
210+
js: 24.5
211+
bb: 24.8
212+
multimethod_dispatch:
213+
cold:
214+
cw: 7.2
215+
c: 1.3
216+
zig: 1.7
217+
java: 22.5
218+
tgo: 2.4
219+
py: 14.7
220+
rb: 30.7
221+
js: 22.0
222+
bb: 16.5
223+
real_workload:
224+
cold:
225+
cw: 11.0
226+
c: 1.6
227+
zig: 4.5
228+
java: 23.8
229+
tgo: 2.0
230+
py: 14.9
231+
rb: 34.8
232+
js: 24.0
233+
bb: 17.8
234+
wasm_load:
235+
cold:
236+
cw: 11.1
237+
wasm_call:
238+
cold:
239+
cw: 117.2
240+
wasm_memory:
241+
cold:
242+
cw: 27.3
243+
wasm_fib:
244+
cold:
245+
cw: 3984.1
246+
wasm_sieve:
247+
cold:
248+
cw: 316.3
249+
gc_alloc_rate:
250+
cold:
251+
cw: 51.1
252+
js: 25.5
253+
bb: 43.9
254+
gc_large_heap:
255+
cold:
256+
cw: 30.4
257+
js: 28.5
258+
bb: 46.3
259+
wasm_tgo_fib:
260+
cold:
261+
cw: 3345.4
262+
wasm_tgo_tak:
263+
cold:
264+
cw: 11000.8
265+
wasm_tgo_arith:
266+
cold:
267+
cw: 3.9
268+
wasm_tgo_sieve:
269+
cold:
270+
cw: 204.7

0 commit comments

Comments
 (0)