jit 1.0 compiled validators, queries and codecs are out. Star it on GitHub →

jit

Benchmarks

Every suite, every competitor

Results as published in the repository README. Each suite links to its detail page with heap measurements and the exact command to reproduce it on your machine.

mitata · Node 22.17.1 · linux-x64 · AMD Ryzen 7 5800H · captured 2026-07-11Zod 4.4.3 · TypeBox 0.34 · typia 12 · fast-json-stringify 7

Validation

is() — valid objectlower is better · pnpm bench:validate

Boolean guard over a realistic user object.

safeParse — invalid object, 7 issueslower is better · pnpm bench:validate

Structured issue reporting on a deeply broken input.

High-load validation

is() — 10k valid userslower is better · pnpm bench:load

Preallocated batch of unknown users, validation work only.

is() — 100k valid userslower is better · pnpm bench:load

Same benchmark at 100k rows — jit stays allocation-free.

safeParse — 10k valid userslower is better · pnpm bench:load

Structured parsing over a preallocated batch.

safeParse — 100k users, invalid taillower is better · pnpm bench:load

Issue collection at the end of a 100k batch.

Data operations

equal — array with 100k itemslower is better · pnpm bench:equal

Schema-aware deep equality over a large collection.

diff — nested arrayslower is better · pnpm bench:diff

Structural diff entries over nested collections.

update — deep immutable patchlower is better · pnpm bench:update

Surgical immutable update of a nested object (no Proxy).

Serialization & streaming

JSON stringify — medium userlower is better · pnpm bench:serialize

Compiled serializer with static keys and escape fast path.

stream — reject early, bad item 3 of 10klower is better · pnpm bench:stream

Progressive validation fails fast while the payload streams in.

Binary rowsets

filtered count — 1M rowslower is better · pnpm bench:binary

Byte-offset scan over columnar ArrayBuffer rows.

filtered sum — 1M rowslower is better · pnpm bench:binary

Aggregation with columnBase + i hot loops.

adaptive load+query — 1M dynamic rowslower is better · pnpm bench:binary

Unknown input → validated rowset → byte-offset query.

End-to-end flows

validate + query + JSON — 50k objectslower is better · pnpm bench:flows

Validate 50k unknown objects, filter/project admins, serialize the result.

Numbers vary by hardware — treat relative ratios, not absolutes, as the signal.

How these numbers are produced →