Skip to content

Latest commit

 

History

History
96 lines (84 loc) · 3.62 KB

BENCH.md

File metadata and controls

96 lines (84 loc) · 3.62 KB
cpu: Apple M2
runtime: node v20.11.1 (arm64-darwin)

benchmark                   time (avg)             (min … max)
--------------------------------------------------------------
• Non-string fallback
--------------------------------------------------------------
destr                     4.84 ns/iter      (3.78 ns … 326 ns)
JSON.parse                 174 ns/iter       (139 ns … 701 ns)
safeDestr                31.18 ns/iter     (18.41 ns … 337 ns)
sjson                   error: text.charCodeAt is not a function
TypeError: text.charCodeAt is not a function
@hapi/bourne               157 ns/iter       (144 ns … 314 ns)

summary for Non-string fallback
  destr
   6.44x faster than safeDestr
   32.41x faster than @hapi/bourne
   35.96x faster than JSON.parse

• Known values
--------------------------------------------------------------
destr                    22.56 ns/iter     (15.85 ns … 136 ns)
JSON.parse               95.87 ns/iter     (89.92 ns … 227 ns)
safeDestr                50.85 ns/iter     (30.92 ns … 537 ns)
sjson                      113 ns/iter       (109 ns … 266 ns)
@hapi/bourne               105 ns/iter     (98.02 ns … 112 ns)

summary for Known values
  destr
   2.25x faster than safeDestr
   4.25x faster than JSON.parse
   4.64x faster than @hapi/bourne
   5.02x faster than sjson

• plain string (short)
--------------------------------------------------------------
destr                    27.21 ns/iter     (26.14 ns … 107 ns)
JSON.parse (try-catch)     120 ns/iter       (115 ns … 292 ns)
safeDestr                62.07 ns/iter     (41.56 ns … 720 ns)
sjson (try-catch)          148 ns/iter       (135 ns … 475 ns)
@hapi/bourne               130 ns/iter       (125 ns … 308 ns)

summary for plain string (short)
  destr
   2.28x faster than safeDestr
   4.4x faster than JSON.parse (try-catch)
   4.79x faster than @hapi/bourne
   5.43x faster than sjson (try-catch)

• plain string (long)
--------------------------------------------------------------
destr                      567 ns/iter   (34.57 ns … 1'001 ns)
JSON.parse (try-catch)   4'900 ns/iter   (3'813 ns … 6'664 ns)
safeDestr                4'751 ns/iter   (4'284 ns … 5'953 ns)
sjson (try-catch)        2'895 ns/iter   (2'564 ns … 4'633 ns)
@hapi/bourne             6'528 ns/iter   (5'767 ns … 8'859 ns)

summary for plain string (long)
  destr
   5.11x faster than sjson (try-catch)
   8.38x faster than safeDestr
   8.64x faster than JSON.parse (try-catch)
   11.52x faster than @hapi/bourne

• package.json
--------------------------------------------------------------
destr                    3'900 ns/iter   (3'739 ns … 4'597 ns)
JSON.parse               3'426 ns/iter   (3'200 ns … 4'132 ns)
safeDestr                4'290 ns/iter   (3'795 ns … 6'540 ns)
sjson                    4'289 ns/iter   (3'716 ns … 6'109 ns)
@hapi/bourne             3'636 ns/iter   (3'464 ns … 4'400 ns)

summary for package.json
  destr
   1.14x slower than JSON.parse
   1.07x slower than @hapi/bourne
   1.1x faster than sjson
   1.1x faster than safeDestr

• broken object
--------------------------------------------------------------
destr                    3'978 ns/iter   (3'766 ns … 4'634 ns)
JSON.parse (try-catch)   3'478 ns/iter   (3'199 ns … 4'281 ns)
safeDestr                3'953 ns/iter   (3'800 ns … 5'057 ns)
sjson (try-catch)        3'930 ns/iter   (3'724 ns … 4'593 ns)
@hapi/bourne             3'655 ns/iter   (3'455 ns … 4'265 ns)

summary for broken object
  destr
   1.14x slower than JSON.parse (try-catch)
   1.09x slower than @hapi/bourne
   1.01x slower than sjson (try-catch)
   1.01x slower than safeDestr