Checking if a given value matches the schema. This is different to parsing because it doesn't return a new value.
Copy to clipboardimport * as v from "valibot"; import { personSchema } from "./schemas"; if (v.is(personSchema, data)) { // data is narrowed to Person }
Optimizations
| Library | Version | /wk | Optimizations | Mean | Compare | ||||
|---|---|---|---|---|---|---|---|---|---|
ajv (compile) | Code snippet(Setup code is not benchmarked) | 8.20.0 | 249.31M | JIT | 66 ns | ||||
ajv (validate) | Code snippet | 8.20.0 | 249.31M | JIT | 77 ns | 1.17x | |||
zod | Code snippet | 4.6.7 | 221.64M | JIT | 1 μs | 18.22x | |||
zod (compile) | Code snippet | 4.6.7 | 221.64M | JIT | 44 ns | 1.49x | |||
zod/mini | Code snippet | 4.6.7 | 221.64M | JIT | 2 μs | 36.03x | |||
zod/mini (compile) | Code snippet | 4.6.7 | 221.64M | JIT | 44 ns | 1.49x | |||
effect | Code snippet(Setup code is not benchmarked) | 4.0.6 | 31.55M | None | 545 ns | 8.28x | |||
valibot | Code snippet | 1.5.0 | 14.44M | None | 382 ns | 5.8x | |||
typebox | Code snippet | 1.4.3 | 8.15M | JIT | 3 μs | 44.13x | |||
typebox (compile) | Code snippet(Setup code is not benchmarked) | 1.4.3 | 8.15M | JIT | 44 ns | 1.5x | |||
typebox (schema compile) | Code snippet(Setup code is not benchmarked) | 1.4.3 | 8.15M | JIT | 44 ns | 1.51x | |||
typebox (schema) | Code snippet | 1.4.3 | 8.15M | JIT | 3 μs | 46.24x | |||
typebox (script compile) | Code snippet(Setup code is not benchmarked) | 1.4.3 | 8.15M | JIT | 43 ns | 1.52x | |||
yup | Code snippet | 1.7.1 | 7.45M | None | 55 μs | 842.68x | |||
superstruct | Code snippet | 2.0.2 | 4.33M | None | 5 μs | 83.35x | |||
superstruct (schema.is) | Code snippet | 2.0.2 | 4.33M | None | 5 μs | 81.43x | |||
io-ts | Code snippet | 2.2.22 | 1.78M | None | 102 ns | 1.55x | |||
arktype | Code snippet | 2.2.9 | 1.45M | JIT | 686 ns | 10.44x | |||
@sapphire/shapeshift | Code snippet | 5.0.0 | 1M | None | 102 μs | 1_558.76x | |||
sury | Code snippet | 11.0.0 | 269.13K | JIT | 4 μs | 54.36x | |||
sury (compiled) | Code snippet(Setup code is not benchmarked) | 11.0.0 | 269.13K | JIT | 3 μs | 46.73x | |||
typia (createIs) | Code snippet(Setup code is not benchmarked) | 15.2.0 | 211.41K | Precompiled | 43 ns | 1.53x | |||
typia (is) | Code snippet | 15.2.0 | 211.41K | Precompiled | 68 ns | 1.04x | |||
runtypes | Code snippet | 7.0.5 | 147.82K | None | 137 μs | 2_080.77x | |||
zod-compiler | Code snippet | 2.0.7 | 40.31K | Precompiled | 45 ns | 1.46x | |||
zod-compiler (bag) | Code snippet | 2.0.7 | 40.31K | Precompiled | 45 ns | 1.45x | |||
zod-compiler (compact) | Code snippet | 2.0.7 | 40.31K | Precompiled | 45 ns | 1.47x | |||
ata-validator | Code snippet | 1.59.0 | 3.91K | JIT | 42 ns | 1.57x | |||
@railway-ts/pipelines | Code snippet | 0.1.29 | 14 | None | 506 ns | 7.7x | |||