Run benchmarks locally (not part of CI):

mix run bench/parser_bench.exs
mix run bench/engine_bench.exs

Engine.Elixir processes directives through the booking engine in memory. The optional Ecto storage layer is separate from check/1 and query/2; see guides/storage.md for persistence setup and benchmarks there when needed.

For large ledgers, configure SQLite with a file path to avoid in-memory pressure:

config :beancount_ex, Beancount.Repo, database: "ledger.db"

Use Engine.CLI when you need full bean-query coverage beyond the native canned reports.