LogoLogo

Schema Benchmarks

    • home
      Home

    • download_2
      Download

    • timer
      Initialization
    • check_circle
      Validation
    • output_circle
      Parsing
    • swap_horiz
      Codec
    • schema
      Standard Schema
    • format_quote
      String

    • error
      Stack

  • JSON Schema

    • data_object
      Schema to JSON
    • code
      JSON to Schema
    • verified
      Compliance

    • deployed_code
      Libraries

    • article
      Blog
Expand sidebarExpand sidebar
Benchmarks/CodecCodec
github
GitHubGitHub
DiscordDiscord
PreferencesPreferences

Some schema libraries support two way conversion of data, often referred to as "encoding" and "decoding".

We benchmark the time taken to encode and decode a bigint to and from a string.

Copy to clipboardCopy to clipboard
import * as z from "zod"; const bigIntFromString = z.codec(z.string(), z.bigint(), { decode: (str) => BigInt(str), encode: (bigint) => bigint.toString(), }); bigIntFromString.encode(1234567890123456789n); // "1234567890123456789" bigIntFromString.decode("1234567890123456789"); // 1234567890123456789n
format_quoteInvalid data

We don't benchmark codecs with invalid data, as many libraries require the input to be correctly typed before passing it to the codec.

Optimizations
  • flash_offNone
  • codeJIT
  • buildPrecompiled
LibrarysortVersiondownload/wksortOptimizationsEncodearrow_upwardDecodesort
sury11.0.0-rc.1n/aJIT
Code snippetCode snippet
// const encoder = S.encoder(S.bigint, S.string);
encoder(data)

(Commented code is not benchmarked)

91 ns
Code snippetCode snippet
// const decoder = S.decoder(S.string, S.bigint);
decoder(data)

(Commented code is not benchmarked)

114 ns
zod/mini4.4.3n/aJIT
Code snippetCode snippet
z.encode(codec, data)
177 ns
Code snippetCode snippet
z.decode(codec, data)
222 ns
zod4.4.3n/aJIT
Code snippetCode snippet
z.codec(...).encode(data)
189 ns
Code snippetCode snippet
z.codec(...).decode(data)
200 ns
typebox
Accepts unknown valuesAccepts unknown values
This codec allows unknown input, requiring extra validation.
1.3.15n/aJIT
Code snippetCode snippet
// const BigIntFromString = Type.Codec(...).Decode(...).Encode(...);
Value.Encode(BigIntFromString, data)

(Commented code is not benchmarked)

4 μs
Code snippetCode snippet
// const BigIntFromString = Type.Codec(...).Decode(...).Encode(...);
Value.Decode(BigIntFromString, data)

(Commented code is not benchmarked)

4 μs
Created by eskimojo for Open Circle

Preferences

Style
Theme
NPM browser
Code ligatures