Skip to content
Ferrocat

Ferrocat / Performance

Published Comparisons

These are the recorded comparisons previously shown on the homepage. They measure Ferrocat 2.2.0, not the current release. Keep the source revision and task boundaries in view when using them to choose what to benchmark yourself.

Measured
July 30, 2026
Machine
Apple M1 Ultra, 64 GB RAM, macOS ARM64
Revision
c3caa274664a992410d654fc0ac072c042af9e6d

Three different jobs

Parse PO · median MiB/s · higher is better
  • Ferrocat · borrowed Rust parser725 MiB/s
  • pofile-ts · Node.js149 MiB/s
  • gettext/gettext · PHP53 MiB/s
  • polib · Python22 MiB/s
Historical Ferrocat 2.2.0 results on an Apple M1 Ultra. Different tools may perform different validation and preservation work; read the task notes before treating throughput as equivalent work.
  • Parse PO reads the same 10,000-message German Gettext fixture. Ferrocat's displayed result uses its borrowed parser; owned parsing allocates a different result and should be measured separately.
  • Plain merge combines source updates with an existing catalog. It does not include Ferrocat's full high-level ICU checks and placeholder tracking.
  • Full catalog update includes those high-level checks for Ferrocat. The other tools have their own update semantics. GNU msgmerge uses the report's adjusted throughput, accounting for its process baseline; it is not an in-process API.

The figures are rounded medians in MiB/s. They measure these fixtures and tasks, rather than end-to-end application build time or translation quality. Tool startup, validation, allocation and preservation behavior can differ. No speed factor here should be read as a guarantee for another workload or machine.

Inspect the evidence

The reports retain tool versions, fixture identities, iteration settings and the unrounded observations. The repository checks published numbers against those reports. Follow External Benchmarking to reproduce a comparison, or Benchmark Fixtures to choose a representative input.