Hara runtime benchmarks
VM and compiled tiers measured with checksum-verified workloads. Lower prepared-call time is better.
Evidence profile: smoke. Standard-profile runs are required before publishing reference thresholds.
Rust
hara-rust-vm
1.360 ms- Host
- Native
- Engine
- Rust bytecode VM
- Tier
- bytecode
- Artifact
hara eval --engine vm- Size
- Recorded by a standard publication run
| Workload | Prepared | First |
|---|
| arithmetic-branch-mix | 1.3596 ms | 1.3528 ms |
| mutable-array-update | 0.6570 ms | 0.6430 ms |
| mutable-object-counters | 0.5965 ms | 0.6118 ms |
| persistent-nested-transform | 2.2788 ms | 2.7002 ms |
| recursive-tree-eval | 2.2694 ms | 2.2929 ms |
hara-rust-full
0.019 ms- Host
- Native
- Engine
- Rust whole-function compiler
- Tier
- compiled Wasm
- Artifact
hara eval --engine whole-wasm- Size
- Recorded by a standard publication run
| Workload | Prepared | First |
|---|
| arithmetic-branch-mix | 0.0207 ms | 0.0450 ms |
| mutable-array-update | 0.0060 ms | 0.0328 ms |
| mutable-object-counters | 0.0078 ms | 0.0341 ms |
| persistent-nested-transform | 0.0512 ms | 0.0974 ms |
| recursive-tree-eval | 0.0195 ms | 0.0417 ms |
WebAssembly
hara-wasm-vm
3.362 ms- Host
- Browser
- Engine
- Rust bytecode VM in Wasm
- Tier
- bytecode
- Artifact
@hara-lang/browser/vm- Size
- 3.04 MB ESM · 876 KB gzip
| Workload | Prepared | First |
|---|
| arithmetic-branch-mix | 3.3625 ms | — |
| mutable-array-update | 1.8923 ms | — |
| mutable-object-counters | 1.7857 ms | — |
| persistent-nested-transform | 3.9571 ms | — |
| recursive-tree-eval | 3.6143 ms | — |
hara-wasm-full
0.028 ms- Host
- Browser
- Engine
- Whole-function Wasm compiler
- Tier
- compiled Wasm
- Artifact
@hara-lang/browser/full- Size
- 3.30 MB ESM · 954 KB gzip
| Workload | Prepared | First |
|---|
| arithmetic-branch-mix | 0.0222 ms | — |
| mutable-array-update | 0.0054 ms | — |
| mutable-object-counters | 0.0335 ms | — |
| persistent-nested-transform | 0.2940 ms | — |
| recursive-tree-eval | 0.0283 ms | — |
Truffle
hara-truffle-jvm
2.881 ms- Host
- JVM
- Engine
- Graal/Truffle interpreter
- Tier
- optimizing VM
- Artifact
java … hara.truffle.Main- Size
- Recorded by a standard publication run
| Workload | Prepared | First |
|---|
| arithmetic | 10.9614 ms | 99.3926 ms |
| branchy-loop | 10.9389 ms | 94.1287 ms |
| function-call | 5.0374 ms | 90.5256 ms |
| noop | 0.0206 ms | 79.2935 ms |
| persistent-map | 1.7895 ms | 84.3275 ms |
| persistent-vector | 2.2175 ms | 83.7090 ms |
| sequence-navigation | 2.8805 ms | 88.8175 ms |
hara-truffle-native-vm
NOT MEASURED- Host
- Native Image
- Engine
- Truffle native fallback
- Tier
- VM
- Artifact
target/hara-truffle-native-vm- Size
- Recorded by a standard publication run
This target is fully specified but was not built on the evidence host. A standard publication runner must supply its measurement artifact.
hara-truffle-native-full
NOT MEASURED- Host
- Native Image
- Engine
- Truffle native compiled tier
- Tier
- compiled
- Artifact
target/hara-truffle-native-full- Size
- Recorded by a standard publication run
This target is fully specified but was not built on the evidence host. A standard publication runner must supply its measurement artifact.
HTTP frameworks
Single worker/event loop, loopback HTTP/1.1, keep-alive, concurrency 8.
| Route | Server | Requests/sec | p50 ms | p95 ms | p99 ms |
| /hello | hoplite | 48461.3 | 0.000 | 0.000 | 0.000 |
| /json | hoplite | 48285.8 | 0.000 | 0.000 | 0.000 |
| /delay | hoplite | 281.2 | 27.000 | 28.000 | 28.000 |
| /hello | openresty | 49975.0 | 0.000 | 0.000 | 0.000 |
| /json | openresty | 56513.1 | 0.000 | 0.000 | 0.000 |
| /delay | openresty | 285.7 | 27.000 | 27.000 | 28.000 |
| /hello | nginx | 58530.9 | 0.000 | 0.000 | 0.000 |
| /json | nginx | 63816.2 | 0.000 | 0.000 | 0.000 |
| /hello | fastify | 31220.7 | 0.000 | 0.000 | 1.000 |
| /json | fastify | 31520.9 | 0.000 | 0.000 | 1.000 |
| /delay | fastify | 274.2 | 28.000 | 29.000 | 30.000 |
| /hello | axum | 52151.2 | 0.000 | 0.000 | 0.000 |
| /json | axum | 45903.1 | 0.000 | 0.000 | 0.000 |
| /delay | axum | 276.9 | 28.000 | 29.000 | 29.000 |
| /delay | nginx | not applicable | — | — | — |
Methodology
Every adapter checks the same expected result. Compilation, first execution, and prepared execution are separate boundaries. Browser windows use adaptive batching; HTTP values are medians across trials. Every target remains fully specified even when a particular evidence host cannot build it.