Skip to content

How does rustledger compare?

Plain text accounting tools at a glance.

rustledgerBeancountLedgerhledger
LanguageRustPythonC++Haskell
SyntaxBeancountBeancountLedgerLedger
ValidationStrictStrictOptionalOptional
Validation (10k txns)~43ms~789ms~108ms~498ms
Balance Report~34ms~1046ms~63ms~538ms
DependenciesNonePython + pipNoneGHC runtime
Booking methods77ManualManual
Plugins20 + PythonPythonNoNo
WebAssemblyYesNoNoNo

Performance Benchmarks

Validation BenchmarkBalance Report Benchmark

Benchmarks run nightly on 10K transaction ledgers. View workflow →

Benchmark details

What's measured:

  • Validation: Parse ledger + validate (balance assertions, account opens, etc.)
  • Balance Report: Parse + compute all account balances

Memory efficiency: rustledger typically uses 3-5x less memory than Python beancount thanks to Rust's zero-cost abstractions and efficient data structures.

Run locally:

bash
# Quick comparison (requires nix)
nix develop .#bench
./scripts/bench.sh

# Criterion micro-benchmarks
cargo bench -p rustledger-core
cargo bench -p rustledger-parser

See BENCHMARKING.md for detailed benchmark documentation.