6.5 GB/s JSON Parsing in Mojo — Beating Rust and C++ on Apple Silicon

6.5 GB/s JSON Parsing in Mojo

mojo-json parses JSON at 6.5 GB/s on Apple Silicon — 52% faster than the fastest C++ and Rust parsers.

We benchmarked 6 JSON parsers across 3 languages on an M3 Ultra. mojo-json wins all 3 files.

The Numbers

Library Language twitter.json canada.json citm_catalog.json
mojo-json Mojo 6,574 MB/s 5,673 MB/s 6,337 MB/s
simdjson C++ 4,313 MB/s 3,898 MB/s 5,970 MB/s
sonic-rs Rust 1,650 MB/s 1,144 MB/s 2,855 MB/s
simd-json Rust 1,019 MB/s 494 MB/s 1,269 MB/s
orjson Python 794 MB/s 405 MB/s 817 MB/s
serde-json Rust 353 MB/s 535 MB/s 806 MB/s

10 iterations each, 5 warmup. Apple M3 Ultra, macOS Sequoia 15.2.

What the Benchmarks Test

These files are from nativejson-benchmark, the standard suite for JSON parser comparison:

File Size Tests
twitter.json 617 KB Web API payloads, Unicode, nested objects
canada.json 2.2 MB GeoJSON coordinates, heavy float parsing
citm_catalog.json 1.7 MB Deeply nested structures, mixed types

How

mojo-json implements the simdjson algorithm in Mojo:

  • ARM NEON SIMD via C FFI for 64-byte vectorized chunk processing
  • Branchless classification with lookup tables
  • Prefix-XOR string tracking using carry-less multiply
  • Pure Mojo — no Python interpreter overhead

The result: simdjson-level performance in a language with Python's syntax.

Try It

git clone https://github.com/atsentia/mojo-json
cd mojo-json/neon && ./build.sh
mojo run -I . benchmarks/bench_neon.mojo

Full benchmark methodology: docs/BENCHMARKS.md

Note: These results are from a single hardware configuration (M3 Ultra). Performance may vary on other systems — we'd welcome community benchmarks on different platforms.


Originally posted at atsentia.com blog


Profile picture

Bio: AI Engineer and founder of Atsentia. Previously: Microsoft, Google, YouTube. PhD in CS.