Logo

Schema Benchmarks

Collapse
    • homeHome

    • timerInitialization
    • check_circleValidation
    • output_circleParsing

    • download_2Download
Expand sidebar
Benchmarkschevron_rightValidation

Checking if a given value matches the schema. This is different to parsing because it doesn't return a new value.

import * as v from "valibot";
import { personSchema } from "./schemas";

if (v.is(personSchema, data)) {
  // data is narrowed to Person
}
Data
check_circleValiderrorInvalid
Optimizations
flash_offNonecodeJITbuildPrecompiled
LibraryVersionOptimizationsMeanCompare
typebox (compile)
Code snippet
// const compiled = Compile(schema);
compiled.Check(data);

(Commented code is not benchmarked)

1.0.51JIT50 ns
typia (createIs)
Code snippet
// const is = typia.createIs<TypiaSchema>();
is(data);

(Commented code is not benchmarked)

10.0.2Precompiled1 μs
21.52x
stat_minus_1
typia (is)
Code snippet
typia.is<TypiaSchema>(data)
10.0.2Precompiled1 μs
22.95x
stat_minus_1
typebox
Code snippet
Value.Check(schema, data)
1.0.51None2 μs
33.98x
stat_minus_1
ajv (compile)
Code snippet
// const validate = ajv.compile(schema);
validate(data);

(Commented code is not benchmarked)

8.17.1JIT3 μs
67.96x
stat_minus_1
ajv (validate)
Code snippet
ajv.validate(schema, data)
8.17.1JIT3 μs
68.74x
stat_minus_1
arktype
Code snippet
schema.allows(data)
2.1.25None7 μs
137.67x
stat_minus_1
valibot
Code snippet
v.is(schema, data)
1.1.0None12 μs
246.24x
stat_minus_1
effect
Code snippet
// const is = Schema.is(schema);
is(data);

(Commented code is not benchmarked)

3.19.3None19 μs
390.11x
stat_minus_1
joi
Code snippet
schema.validate(data)
18.0.1None36 μs
714.57x
stat_minus_1
yup
Code snippet
schema.isValidSync(data)
1.7.1None145 μs
2,915.26x
stat_minus_3
Created by eskimojo for Open Circle