Parsing a value to match the schema. This is different to validation because it returns a new value.
import * as v from "valibot";
import { personSchema } from "./schemas";
const person = v.parse(personSchema, data);
// person is of type Person
| Library | Version | Optimizations | Error type | Mean | Compare | |||
|---|---|---|---|---|---|---|---|---|
typia (createValidate) | Code snippet(Commented code is not benchmarked) | 10.0.2 | Precompiled | All errors | 1 μs | |||
typia (validate) | Code snippet | 10.0.2 | Precompiled | All errors | 1 μs | 1.05x | ||
arktype | Code snippet | 2.1.25 | None | All errors | 7 μs | 6.63x | ||
zod | Code snippet | 4.1.12 | JIT | All errors | 9 μs | 7.87x | ||
zod (mini, jitless) | Code snippet | 4.1.12 | None | All errors | 11 μs | 10.08x | ||
zod (mini) | Code snippet | 4.1.12 | JIT | All errors | 12 μs | 10.59x | ||
zod (jitless) | Code snippet | 4.1.12 | None | All errors | 12 μs | 10.62x | ||
valibot (abortPipeEarly only) | Code snippet | 1.1.0 | None | Abort early | 12 μs | 11.16x | ||
valibot | Code snippet | 1.1.0 | None | Abort early | 12 μs | 11.17x | ||
valibot | Code snippet | 1.1.0 | None | All errors | 12 μs | 11.35x | ||
effect | Code snippet(Commented code is not benchmarked) | 3.19.3 | None | Abort early | 18 μs | 16.71x | ||
effect | Code snippet(Commented code is not benchmarked) | 3.19.3 | None | All errors | 18 μs | 16.78x | ||
joi | Code snippet | 18.0.1 | None | All errors | 36 μs | 33.13x | ||
joi | Code snippet | 18.0.1 | None | Abort early | 36 μs | 33.29x | ||
yup | Code snippet | 1.7.1 | None | Abort early | 143 μs | 130.7x | ||
yup | Code snippet | 1.7.1 | None | All errors | 143 μs | 130.78x | ||
typebox (compile) | Code snippet(Commented code is not benchmarked) | 1.0.51 | JIT | All errors | 249 μs | 227.43x | ||
typebox | Code snippet | 1.0.51 | None | All errors | 261 μs | 238.72x |