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 | ||||
|---|---|---|---|---|---|---|---|---|---|
ata-validator | Code snippet | 1.46.1 | 5.6K | JIT | 34 ns | ||||
typebox (script compile) | Code snippet(Setup code is not benchmarked) | 1.3.36 | 13.22M | JIT | 36 ns | 1.05x | |||
zod (compile) | Code snippet | 4.6.5 | 341.7M | JIT | 36 ns | 1.06x | |||
typebox (schema compile) | Code snippet(Setup code is not benchmarked) | 1.3.36 | 13.22M | JIT | 36 ns | 1.06x | |||
zod/mini (compile) | Code snippet | 4.6.5 | 341.7M | JIT | 36 ns | 1.07x | |||
zod-compiler (compact) | Code snippet | 2.0.7 | 66.44K | Precompiled | 37 ns | 1.09x | |||
typia (createIs) | Code snippet(Setup code is not benchmarked) | 15.1.0 | 312.95K | Precompiled | 37 ns | 1.09x | |||
zod-compiler | Code snippet | 2.0.7 | 66.44K | Precompiled | 37 ns | 1.1x | |||
zod-compiler (bag) | Code snippet | 2.0.7 | 66.44K | Precompiled | 37 ns | 1.1x | |||
typebox (compile) | Code snippet(Setup code is not benchmarked) | 1.3.36 | 13.22M | JIT | 38 ns | 1.12x | |||
ajv (compile) | Code snippet(Setup code is not benchmarked) | 8.20.0 | 393.48M | JIT | 45 ns | 1.34x | |||
typia (is) | Code snippet | 15.1.0 | 312.95K | Precompiled | 48 ns | 1.42x | |||
ajv (validate) | Code snippet | 8.20.0 | 393.48M | JIT | 52 ns | 1.53x | |||
io-ts | Code snippet | 2.2.22 | 2.96M | None | 70 ns | 2.08x | |||
valibot | Code snippet | 1.5.0 | 22.42M | None | 267 ns | 7.88x | |||
@railway-ts/pipelines | Code snippet | 0.1.29 | 97 | None | 344 ns | 10.17x | |||
effect | Code snippet(Setup code is not benchmarked) | 4.0.2 | 58.72M | None | 377 ns | 11.13x | |||
arktype | Code snippet | 2.2.8 | 2.1M | JIT | 505 ns | 14.91x | |||
zod | Code snippet | 4.6.5 | 341.7M | JIT | 845 ns | 24.95x | |||
zod/mini | Code snippet | 4.6.5 | 341.7M | JIT | 2 μs | 47.9x | |||
typebox (schema) | Code snippet | 1.3.36 | 13.22M | JIT | 2 μs | 62x | |||
sury (compiled) | Code snippet(Setup code is not benchmarked) | 11.0.0 | 472.92K | JIT | 2 μs | 67.67x | |||
typebox | Code snippet | 1.3.36 | 13.22M | JIT | 2 μs | 71.22x | |||
sury | Code snippet | 11.0.0 | 472.92K | JIT | 3 μs | 74.33x | |||
superstruct (schema.is) | Code snippet | 2.0.2 | 6.73M | None | 4 μs | 113.8x | |||
superstruct | Code snippet | 2.0.2 | 6.73M | None | 4 μs | 113.8x | |||
yup | Code snippet | 1.7.1 | 12.64M | None | 39 μs | 1_153.25x | |||
@sapphire/shapeshift | Code snippet | 5.0.0 | 1.58M | None | 70 μs | 2_080.31x | |||
runtypes | Code snippet | 7.0.5 | 257.27K | None | 103 μs | 3_041.53x | |||