alpha
Login
or
Join now
1a-insec.net
/
startup-overhead
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Measure the startup overhead of different programming languages
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
++
author
iacore
date
8 months ago
(Nov 9, 2025, 11:13 AM UTC)
commit
7bb6ec38
7bb6ec38151f86f388df417bcb45b9250bc627c1
parent
c190350c
c190350c05b4eed27b46468e1f1ae2c0ac21f93e
+34
-13
6 changed files
Expand all
Collapse all
Unified
Split
.gitignore
True.hs
readme.md
run-all
timings.md
true.rs
+4
-6
.gitignore
View file
Reviewed
···
1
1
-
true-go
2
2
-
true-hare
3
3
-
true-s
4
4
-
true-zig
5
5
-
true-zig.o
6
6
-
true-lean
1
1
+
true-*
2
2
+
*.o
3
3
+
True.hi
4
4
+
/true
+5
True.hs
View file
Reviewed
···
1
1
+
import System.Exit
2
2
+
3
3
+
main :: IO ()
4
4
+
main = exitSuccess
5
5
+
+5
readme.md
View file
Reviewed
···
2
2
3
3
See [timings](timings.md).
4
4
5
5
+
## Findings
6
6
+
7
7
+
Rust depends on libc.
8
8
+
9
9
+
Everything that depends on libc is slower than C.
+7
-1
run-all
View file
Reviewed
···
1
1
+
#!/usr/bin/fish
2
2
+
1
3
nasm -f elf64 true.s
2
4
ld -o true-s true.o
3
5
···
10
12
lean -cTrue.c True.lean
11
13
leanc -O3 -o true-lean True.c
12
14
13
13
-
hyperfine --export-markdown timings.md -N 'true' './true-s' './true-zig' './true-hare' './true-go' './true-lean'
15
15
+
ghc True.hs -o true-haskell -O
16
16
+
17
17
+
rustc -O -o true-rust true.rs
18
18
+
19
19
+
hyperfine --export-markdown timings.md -N 'true' './true-s' './true-zig' './true-hare' './true-go' './true-lean' './true-haskell' './true-rust'
+8
-6
timings.md
View file
Reviewed
···
1
1
| Command | Mean [µs] | Min [µs] | Max [µs] | Relative |
2
2
|:---|---:|---:|---:|---:|
3
3
-
| `true` | 272.9 ± 31.2 | 238.0 | 933.2 | 3.35 ± 1.43 |
4
4
-
| `./true-s` | 81.5 ± 33.5 | 71.5 | 1460.9 | 1.00 |
5
5
-
| `./true-zig` | 87.1 ± 43.1 | 76.7 | 1748.2 | 1.07 ± 0.69 |
6
6
-
| `./true-hare` | 94.7 ± 48.2 | 84.1 | 1904.5 | 1.16 ± 0.76 |
7
7
-
| `./true-go` | 579.1 ± 133.1 | 499.8 | 4066.2 | 7.11 ± 3.34 |
8
8
-
| `./true-lean` | 1632.5 ± 75.0 | 1519.5 | 2243.9 | 20.04 ± 8.28 |
3
3
+
| `true` | 272.9 ± 24.8 | 238.2 | 596.4 | 3.33 ± 0.76 |
4
4
+
| `./true-s` | 81.9 ± 17.3 | 70.0 | 842.5 | 1.00 |
5
5
+
| `./true-zig` | 87.9 ± 17.6 | 74.7 | 921.4 | 1.07 ± 0.31 |
6
6
+
| `./true-hare` | 94.1 ± 16.3 | 81.8 | 688.2 | 1.15 ± 0.31 |
7
7
+
| `./true-go` | 571.8 ± 34.0 | 485.5 | 944.4 | 6.98 ± 1.53 |
8
8
+
| `./true-lean` | 1746.8 ± 1517.1 | 1534.0 | 20122.6 | 21.33 ± 19.07 |
9
9
+
| `./true-haskell` | 675.2 ± 31.0 | 625.6 | 1206.2 | 8.25 ± 1.78 |
10
10
+
| `./true-rust` | 390.8 ± 30.1 | 342.0 | 663.1 | 4.77 ± 1.07 |
+5
true.rs
View file
Reviewed
···
1
1
+
use std::process::ExitCode;
2
2
+
3
3
+
fn main() -> ExitCode {
4
4
+
0.into()
5
5
+
}