Skip to content

Re-evaluate loading order #47

Closed
Closed

Description

@sandstrom

MultiJSON tries to have intelligent defaulting. […] When loading, libraries are ordered by speed. First fast_jsonparser, then Oj, then Yajl, then the JSON gem. If no other JSON library is available, MultiJSON falls back to OkJson, a simple, vendorable JSON parser.

Is this order still correct?

The vanilla JSON gem is pretty fast these days, since a lot of effort has been spent optimizing it by the performance wizard byroot over the past year (see links below).

== Parsing twitter.json (567916 bytes)
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +YJIT +PRISM [arm64-darwin23]
Warming up --------------------------------------
                json    93.000 i/100ms
                  oj    66.000 i/100ms
          Oj::Parser    80.000 i/100ms
           rapidjson    58.000 i/100ms
Calculating -------------------------------------
                json    928.472 (± 0.3%) i/s    (1.08 ms/i) -      4.650k in   5.008282s
                  oj    666.198 (± 0.8%) i/s    (1.50 ms/i) -      3.366k in   5.052899s
          Oj::Parser    803.031 (± 0.2%) i/s    (1.25 ms/i) -      4.080k in   5.080788s
           rapidjson    584.869 (± 0.2%) i/s    (1.71 ms/i) -      2.958k in   5.057565s

Comparison:
                json:      928.5 i/s
          Oj::Parser:      803.0 i/s - 1.16x  slower
                  oj:      666.2 i/s - 1.39x  slower
           rapidjson:      584.9 i/s - 1.59x  slower

Links

Activity

  1. simi commented on Oct 30, 2025

    @simi
    Collaborator

    🙏 ruby/json#875 will land soon also, which will make json gem the first choice for all workloads.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions