CLI benchmarks
Numbers are produced by cargo benchmarks cli. Measures the lemma binary and in-process engine wrappers used by the CLI.
Methodology
HTTP evaluate (http_evaluate)
- Spawns
lemma server --prefix engine/documentation/exampleson127.0.0.1:19877once per Criterion group. - Each iteration: blocking
reqwestPOST withapplication/x-www-form-urlencodedbody (coffee order, library fees, Dutch net salary) or GET for show-only retrieval. - Examples loaded from
engine/documentation/examples. - Latency: Criterion (3s warmup, 10s measurement for evaluate group, 5s for show). Median and standard deviation reported.
Engine profile (engine_profile)
- In-process: loads all
.lemmafiles fromengine/documentation/examplesinto oneEngine. - Fixture: Dutch net salary (
net_salary) withgross_salary=5000 eur,pay_period=month,income_source=employment,pension_contribution=150 eur,payroll_tax_credit=true; effective isDateTimeValue::now()per iteration setup. - Breakdown benches isolate evaluate, overlay resolve, single-rule run, and JSON serialization paths.
- Latency: Criterion (3s warmup, 5s measurement). Median and standard deviation reported.
Environment
- Host:
Linux 7.0.0-30-generic x86_64 - Lemma git SHA:
350a113da4fa721345f22dec1b0302ddd13b0785 - Rustc:
rustc 1.92.0 (ded5c06cf 2025-12-08)
binary: rustc
commit-hash: ded5c06cf21d2b93bffd5d884aa6e96934ee4234
commit-date: 2025-12-08
host: x86_64-unknown-linux-gnu
release: 1.92.0
LLVM version: 21.1.3
HTTP evaluate latency
| Case | Median | Std dev |
|---|---|---|
POST /coffee_order |
271.57 us | 29.22 us |
POST /library_fees |
166.97 us | 20.25 us |
POST /net_salary |
539.87 us | 32.09 us |
GET /net_salary (show only) |
160.08 us | 11.70 us |
Engine profile latency (Dutch net salary)
| Case | Median | Std dev |
|---|---|---|
Full Engine::run |
330.02 us | 6.16 us |
Single-rule evaluate (periods_per_year) |
21.35 us | 629 ns |
| Envelope JSON serialize | 19.83 us | 637 ns |
| Raw response JSON serialize | 2.74 us | 48 ns |