Switch to dark mode

reference

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/examples on 127.0.0.1:19877 once per Criterion group.
  • Each iteration: blocking reqwest POST with application/x-www-form-urlencoded body (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 .lemma files from engine/documentation/examples into one Engine.
  • Fixture: Dutch net salary (net_salary) with gross_salary=5000 eur, pay_period=month, income_source=employment, pension_contribution=150 eur, payroll_tax_credit=true; effective is DateTimeValue::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