LogoLogo

Schema Benchmarks

    • home
      Home

    • download_2
      Download
    • timer
      Initialization
    • check_circle
      Validation
    • output_circle
      Parsing
    • schema
      Standard Schema
    • format_quote
      String
    • error
      Stack

    • article
      Blog
Code styleCode style
Normal styleNormal style
System themeSystem theme
Light themeLight theme
Dark themeDark theme
Expand sidebarExpand sidebar
Benchmarks/Standard SchemaStandard Schema
Code styleCode style
Normal styleNormal style
System themeSystem theme
Light themeLight theme
Dark themeDark theme
github
GitHubGitHub
DiscordDiscord

Many libraries implement the Standard Schema interface, which allows many other libraries to accept them without needing to specialise for each library.

import { personSchema } from "./schemas";

const person = await upfetch(url, { schema: personSchema });

We benchmark the time taken to parse using a standard schema.

infoInfo

Some libraries require an adapter before they can be used as a standard schema. The time to convert the schema is not measured, only the time to parse using it.

Data
errorInvalidcheck_circleValid
Optimizations
flash_offNonecodeJITbuildPrecompiled
Abort early
errorAll errorswarningAbort early
LibrarysortVersionDownloads (/wk)sortOptimizationsError typeMeanarrow_upwardCompare
joi
Code snippetCode snippet
upfetch(url, { schema })
18.0.218MNoneAll errors4 μs
effect
Code snippetCode snippet
// const standardSchema = Schema.standardSchemaV1(
//   schema, 
//   { errors: "first" }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

3.19.198.3MNoneAbort early5 μs
1.09x
stat_minus_1
sury
Code snippetCode snippet
upfetch(url, { schema })
11.0.0-alpha.4148KJITAll errors8 μs
1.82x
stat_minus_1
typia
Code snippetCode snippet
// const validate = typia.createValidate<TypiaSchema>();
upfetch(url, { schema: validate })

(Commented code is not benchmarked)

11.0.3244KPrecompiledAll errors11 μs
2.44x
stat_minus_1
valibot
Code snippetCode snippet
upfetch(url, { schema })
1.2.06.6MNoneAll errors29 μs
6.48x
stat_minus_1
effect@beta
Code snippetCode snippet
// const standardSchema = Schema.toStandardSchemaV1(
//   schema, 
//   { parseOptions: { errors: "first" } }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

4.0.0-beta.58.3MNoneAbort early30 μs
6.84x
stat_minus_1
effect@beta
Code snippetCode snippet
// const standardSchema = Schema.toStandardSchemaV1(
//   schema, 
//   { parseOptions: { errors: "all" } }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

4.0.0-beta.58.3MNoneAll errors30 μs
6.88x
stat_minus_1
@railway-ts/pipelines
Code snippetCode snippet
upfetch(url, { schema })
0.1.27155NoneAll errors31 μs
6.98x
stat_minus_1
zod/mini
Code snippetCode snippet
upfetch(url, { schema })
4.3.6106MJITAll errors71 μs
16.19x
stat_minus_1
effect
Code snippetCode snippet
// const standardSchema = Schema.standardSchemaV1(
//   schema, 
//   { errors: "all" }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

3.19.198.3MNoneAll errors73 μs
16.65x
stat_minus_1
zod
Code snippetCode snippet
upfetch(url, { schema })
4.3.6106MJITAll errors76 μs
17.18x
stat_minus_1
arktype
Code snippetCode snippet
upfetch(url, { schema })
2.1.29972KJITAll errors98 μs
22.19x
stat_minus_1
yup
Code snippetCode snippet
upfetch(url, { schema })
1.7.110MNoneAll errors552 μs
125.16x
stat_minus_3
Created by eskimojo for Open Circle