Skip to content

How the hell is json encode faster , compared to every thing else on benchmark #2114

@KAKAROT379

Description

@KAKAROT379
> [email protected] bench
> node bench

benchmarking encoding performance ...

protobuf.js (reflect) x 472,670 ops/sec ±3.46% (84 runs sampled)
protobuf.js (static) x 503,024 ops/sec ±2.78% (93 runs sampled)
JSON (string) x 620,443 ops/sec ±2.48% (92 runs sampled)
JSON (buffer) x 511,103 ops/sec ±4.41% (90 runs sampled)
google-protobuf x 278,468 ops/sec ±3.29% (87 runs sampled)

          JSON (string) was fastest
          JSON (buffer) was 19.1% ops/sec slower (factor 1.2)
   protobuf.js (static) was 19.2% ops/sec slower (factor 1.2)
  protobuf.js (reflect) was 24.5% ops/sec slower (factor 1.3)
        google-protobuf was 55.5% ops/sec slower (factor 2.2)

benchmarking decoding performance ...

protobuf.js (reflect) x 1,407,764 ops/sec ±1.39% (92 runs sampled)
protobuf.js (static) x 1,518,683 ops/sec ±2.12% (93 runs sampled)
JSON (string) x 444,182 ops/sec ±0.81% (89 runs sampled)
JSON (buffer) x 386,086 ops/sec ±2.25% (91 runs sampled)
google-protobuf x 308,558 ops/sec ±4.06% (89 runs sampled)

   protobuf.js (static) was fastest
  protobuf.js (reflect) was 6.6% ops/sec slower (factor 1.1)
          JSON (string) was 70.4% ops/sec slower (factor 3.4)
          JSON (buffer) was 74.6% ops/sec slower (factor 3.9)
        google-protobuf was 80.1% ops/sec slower (factor 5.0)

benchmarking combined performance ...

protobuf.js (reflect) x 356,577 ops/sec ±2.40% (93 runs sampled)
protobuf.js (static) x 377,525 ops/sec ±0.50% (91 runs sampled)
JSON (string) x 248,215 ops/sec ±2.41% (94 runs sampled)
JSON (buffer) x 206,619 ops/sec ±2.62% (89 runs sampled)
google-protobuf x 140,726 ops/sec ±0.81% (90 runs sampled)

   protobuf.js (static) was fastest
  protobuf.js (reflect) was 7.3% ops/sec slower (factor 1.1)
          JSON (string) was 35.5% ops/sec slower (factor 1.5)
          JSON (buffer) was 46.4% ops/sec slower (factor 1.9)
        google-protobuf was 62.8% ops/sec slower (factor 2.7)

benchmarking fromJSON performance ...

isolated x 471 ops/sec ±4.83% (83 runs sampled)
isolated (resolveAll) x 491 ops/sec ±2.10% (87 runs sampled)
shared (unique) x 4.28 ops/sec ±5.74% (15 runs sampled)

  isolated (resolveAll) was fastest
               isolated was 6.6% ops/sec slower (factor 1.1)
        shared (unique) was 99.2% ops/sec slower (factor 118.8)

benchmarking resolveAll performance ...

isolated x 61,481,810 ops/sec ±4.94% (77 runs sampled)

benchmarking load performance ...

sync x 3,442 ops/sec ±6.53% (74 runs sampled)
OS: Ubuntu 24.04.3 LTS x86_64
Host: *VPS*
Kernel: 6.6.111+
Uptime: 1 hour, 21 mins
Packages: 843 (dpkg)
Shell: bash 5.2.21
Terminal: /dev/pts/0
CPU: Intel Xeon (2) @ 2.199GHz
Memory: 377MiB / 7947MiB

Npm: 11.6.2
Node: v24.11.1

I tried it multiple times and i am getting similar results

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions