Logo

Schema Benchmarks

Collapse
    • homeHome

    • timerInitialization
    • check_circleValidation
    • output_circleParsing

    • download_2Download
Expand sidebar
Benchmarkschevron_rightParsing

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
Data
check_circleValiderrorInvalid
Optimizations
flash_offNonecodeJITbuildPrecompiled
Abort early
errorAll errorswarningAbort early
LibraryVersionOptimizationsError typeMeanCompare
valibot
Code snippet
v.safeParse(schema, data)
1.1.0NoneAll errors29 μs
effect
Code snippet
// const decodeAll = Schema.decodeUnknownEither(
//  schema, 
//  { errors: "all" }
// );
decodeAll(data)

(Commented code is not benchmarked)

3.19.3NoneAll errors43 μs
1.48x
stat_minus_1
joi
Code snippet
schema.validate(data, { abortEarly: false })
18.0.1NoneAll errors58 μs
2.03x
stat_minus_1
zod (mini, jitless)
Code snippet
schema.safeParse(data, { jitless: true })
4.1.12NoneAll errors76 μs
2.63x
stat_minus_1
arktype
Code snippet
schema(data)
2.1.25NoneAll errors86 μs
3.01x
stat_minus_1
zod (jitless)
Code snippet
schema.safeParse(data, { jitless: true })
4.1.12NoneAll errors94 μs
3.26x
stat_minus_1
typebox
Code snippet
Value.Parse(schema, data)
1.0.51NoneAll errors240 μs
8.33x
stat_minus_2
yup
Code snippet
schema.validateSync(data, { abortEarly: false })
1.7.1NoneAll errors526 μs
18.3x
stat_minus_3
Created by eskimojo for Open Circle