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

    • 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 Date to and from a string (usually an ISO 8601 string, but we don't enforce this).

Copy to clipboardCopy to clipboard
import * as z from "zod"; const dateFromString = z.codec(z.iso.datetime(), z.date(), { encode: (date) => date.toISOString(), decode: (str) => new Date(str), }); dateFromString.encode(new Date(0)); // "1970-01-01T00:00:00.000Z" dateFromString.decode("1970-01-01T00:00:00.000Z"); // Date
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_offNonecodeJITbuildPrecompiled
LibrarysortVersionDownloads (/wk)sortOptimizationsEncodearrow_upwardDecodesort
effect3.21.213.85MNone
Code snippetCode snippet
Schema.encodeSync(Schema.Date)(data)
1 μs
Code snippetCode snippet
Schema.decodeSync(Schema.Date)(data)
900 ns
effect (unknown)
Accepts unknown valuesAccepts unknown values
This codec allows unknown input, requiring extra validation.
3.21.213.85MNone
Code snippetCode snippet
Schema.encodeUnknownSync(Schema.Date)(data)
1 μs
Code snippetCode snippet
Schema.decodeUnknownSync(Schema.Date)(data)
889 ns
effect@beta (unknown)
Accepts unknown valuesAccepts unknown values
This codec allows unknown input, requiring extra validation.
4.0.0-beta.6513.85MNone
Code snippetCode snippet
// const DateFromString = Schema.Date.pipe(...);
Schema.encodeUnknownSync(DateFromString)(data)

(Commented code is not benchmarked)

1 μs
Code snippetCode snippet
// const DateFromString = Schema.Date.pipe(...);
Schema.decodeUnknownSync(DateFromString)(data)

(Commented code is not benchmarked)

700 ns
effect@beta4.0.0-beta.6513.85MNone
Code snippetCode snippet
// const DateFromString = Schema.Date.pipe(...);
Schema.encodeSync(DateFromString)(data)

(Commented code is not benchmarked)

1 μs
Code snippetCode snippet
// const DateFromString = Schema.Date.pipe(...);
Schema.decodeSync(DateFromString)(data)

(Commented code is not benchmarked)

707 ns
io-ts2.2.223.37MNone
Code snippetCode snippet
// const DateFromString = new t.Type<Date, string, string>(...)
DateFromString.encode(data)

(Commented code is not benchmarked)

520 ns
Code snippetCode snippet
// const DateFromString = new t.Type<Date, string, string>(...)
DateFromString.decode(data)

(Commented code is not benchmarked)

283 ns
Created by eskimojo for Open Circle

Preferences

Style
Theme
NPM browser