{"id":14977756,"url":"https://github.com/jsonjoy-com/json-pack","last_synced_at":"2025-10-05T22:20:42.849Z","repository":{"id":232403690,"uuid":"783733796","full_name":"jsonjoy-com/json-pack","owner":"jsonjoy-com","description":"High-performance JSON serialization in native JavaScript. Works in browser and Node.js","archived":false,"fork":false,"pushed_at":"2024-12-08T17:40:38.000Z","size":2239,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-01T12:11:11.098Z","etag":null,"topics":["amazon-ion","bencode","bencode-parser","bson","cbor","dag-cbor","dag-json","ejson","json","msgpack","redis","resp3","ubjson"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jsonjoy-com.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"streamich"}},"created_at":"2024-04-08T13:17:57.000Z","updated_at":"2025-01-17T05:18:50.000Z","dependencies_parsed_at":"2024-04-09T18:05:41.892Z","dependency_job_id":"628f6f94-ad7c-46d6-a038-c8ef943d305a","html_url":"https://github.com/jsonjoy-com/json-pack","commit_stats":{"total_commits":18,"total_committers":1,"mean_commits":18.0,"dds":0.0,"last_synced_commit":"91c725f45e1b86fb4b6bc32496deedc82ab27103"},"previous_names":["jsonjoy-com/json-pack"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsonjoy-com%2Fjson-pack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsonjoy-com%2Fjson-pack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsonjoy-com%2Fjson-pack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsonjoy-com%2Fjson-pack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsonjoy-com","download_url":"https://codeload.github.com/jsonjoy-com/json-pack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238603665,"owners_count":19499488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-ion","bencode","bencode-parser","bson","cbor","dag-cbor","dag-json","ejson","json","msgpack","redis","resp3","ubjson"],"created_at":"2024-09-24T13:56:15.879Z","updated_at":"2025-10-05T22:20:42.828Z","avatar_url":"https://github.com/jsonjoy-com.png","language":"TypeScript","readme":"# json-pack\n\nThe fastest JSON serialization and deserialization library for JavaScript, Node.js, browser.\n\n\n## Supported Formats\n\nThis library implements the following serialization formats:\n\n- **[MessagePack](./src/msgpack/README.md)** - The classic, *MessagePack*\n- **[CBOR](./src/cbor/README.md)** - Concise Binary Object Representation codec\n- **[UBJSON](./src/ubjson/README.md)** - Universal Binary JSON codec\n- **[JSON](./src/json/README.md)** - Enhanced JSON encoder/decoder with additional features\n- **[JSON Binary](./src/json-binary/README.md)** - JSON with binary data support using Uint8Array\n- **[Amazon Ion](./src/ion/README.md)** - Amazon's Ion data serialization format\n- **[BSON](./src/bson/README.md)** - Binary JSON format used by MongoDB\n- **[RESP](./src/resp/README.md)** - Redis Serialization Protocol (v2 and v3)\n- **[Bencode](./src/bencode/README.md)** - BitTorrent's encoding format\n\nEach format comes with optimized encoders and decoders designed for maximum performance.\n\n\n## Installation\n\n```bash\nnpm install @jsonjoy.com/json-pack\n```\n\n\n## Quick Start\n\n```ts\nimport {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';\n\nconst encoder = new MessagePackEncoder();\nconst decoder = new MessagePackDecoder();\n\nconst data = {hello: 'world', numbers: [1, 2, 3]};\nconst binary = encoder.encode(data);\nconst restored = decoder.decode(binary);\n\nconsole.log(restored); // {hello: 'world', numbers: [1, 2, 3]}\n```\n\n\n## Benchmarks\n\nEncoding:\n\n```\nnpx ts-node benchmarks/json-pack/bench.encoding.ts\n=============================================================================== Benchmark: Encoding\nWarmup: 1000x , Node.js: v20.0.0 , Arch: arm64 , CPU: Apple M1\n---------------------------------------------------------------------------- Small object, 44 bytes\n🤞 json-pack JsonEncoder x 5,385,617 ops/sec ±0.53% (100 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 2,254,954 ops/sec ±0.83% (97 runs sampled)\n🤞 json-pack CborEncoderFast x 5,953,159 ops/sec ±1.12% (92 runs sampled)\n🤞 json-pack CborEncoder x 6,248,036 ops/sec ±0.29% (98 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 3,121,940 ops/sec ±0.16% (99 runs sampled)\n🤞 JSON.stringify() x 3,866,116 ops/sec ±0.11% (101 runs sampled)\n🤞 @msgpack/msgpack x 1,406,546 ops/sec ±0.94% (93 runs sampled)\n🤞 msgpackr x 2,404,916 ops/sec ±3.22% (86 runs sampled)\n🤞 cbor-x x 4,737,433 ops/sec ±1.00% (97 runs sampled)\n🤞 msgpack-lite x 987,201 ops/sec ±2.84% (91 runs sampled)\n🤞 msgpack5 x 197,867 ops/sec ±3.65% (84 runs sampled)\n🤞 messagepack x 171,865 ops/sec ±4.44% (74 runs sampled)\nFastest is 🤞 json-pack CborEncoder\n------------------------------------------------------------------------- Typical object, 993 bytes\n🤞 json-pack JsonEncoder x 299,970 ops/sec ±0.30% (97 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 211,651 ops/sec ±0.18% (100 runs sampled)\n🤞 json-pack CborEncoderFast x 429,535 ops/sec ±3.38% (93 runs sampled)\n🤞 json-pack CborEncoder x 428,848 ops/sec ±0.71% (97 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 322,982 ops/sec ±0.67% (97 runs sampled)\n🤞 JSON.stringify() x 306,828 ops/sec ±1.94% (90 runs sampled)\n🤞 @msgpack/msgpack x 199,937 ops/sec ±5.52% (93 runs sampled)\n🤞 msgpackr x 317,457 ops/sec ±2.18% (90 runs sampled)\n🤞 cbor-x x 401,854 ops/sec ±3.20% (92 runs sampled)\n🤞 msgpack-lite x 135,110 ops/sec ±1.29% (94 runs sampled)\n🤞 msgpack5 x 15,217 ops/sec ±3.72% (85 runs sampled)\n🤞 messagepack x 13,853 ops/sec ±4.73% (71 runs sampled)\nFastest is 🤞 json-pack CborEncoder\n-------------------------------------------------------------------------- Large object, 3741 bytes\n🤞 json-pack JsonEncoder x 87,312 ops/sec ±1.10% (96 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 64,718 ops/sec ±0.45% (96 runs sampled)\n🤞 json-pack CborEncoderFast x 134,615 ops/sec ±0.19% (97 runs sampled)\n🤞 json-pack CborEncoder x 128,975 ops/sec ±0.20% (98 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 103,325 ops/sec ±1.62% (98 runs sampled)\n🤞 JSON.stringify() x 101,067 ops/sec ±1.36% (95 runs sampled)\n🤞 @msgpack/msgpack x 61,715 ops/sec ±0.22% (98 runs sampled)\n🤞 msgpackr x 95,175 ops/sec ±3.84% (95 runs sampled)\n🤞 cbor-x x 111,658 ops/sec ±1.34% (95 runs sampled)\n🤞 msgpack-lite x 41,364 ops/sec ±0.28% (100 runs sampled)\n🤞 msgpack5 x 3,262 ops/sec ±4.32% (71 runs sampled)\n🤞 messagepack x 4,167 ops/sec ±7.29% (65 runs sampled)\nFastest is 🤞 json-pack CborEncoderFast\n-------------------------------------------------------------------- Very large object, 45750 bytes\n🤞 json-pack JsonEncoder x 5,687 ops/sec ±1.92% (94 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 5,813 ops/sec ±2.51% (97 runs sampled)\n🤞 json-pack CborEncoderFast x 5,749 ops/sec ±0.67% (98 runs sampled)\n🤞 json-pack CborEncoder x 5,515 ops/sec ±0.70% (98 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 5,027 ops/sec ±0.19% (100 runs sampled)\n🤞 JSON.stringify() x 7,687 ops/sec ±0.87% (99 runs sampled)\n🤞 @msgpack/msgpack x 3,379 ops/sec ±2.20% (97 runs sampled)\n🤞 msgpackr x 5,929 ops/sec ±15.26% (96 runs sampled)\n🤞 cbor-x x 5,032 ops/sec ±5.17% (90 runs sampled)\n🤞 msgpack-lite x 2,173 ops/sec ±1.17% (97 runs sampled)\n🤞 msgpack5 x 179 ops/sec ±2.95% (68 runs sampled)\n🤞 messagepack x 167 ops/sec ±1.09% (79 runs sampled)\nFastest is 🤞 JSON.stringify()\n------------------------------------------------------------------ Object with many keys, 969 bytes\n🤞 json-pack JsonEncoder x 213,447 ops/sec ±3.31% (95 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 168,303 ops/sec ±2.13% (95 runs sampled)\n🤞 json-pack CborEncoderFast x 275,511 ops/sec ±0.40% (95 runs sampled)\n🤞 json-pack CborEncoder x 270,949 ops/sec ±0.32% (97 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 210,525 ops/sec ±0.66% (99 runs sampled)\n🤞 JSON.stringify() x 200,767 ops/sec ±0.19% (101 runs sampled)\n🤞 @msgpack/msgpack x 163,665 ops/sec ±0.81% (98 runs sampled)\n🤞 msgpackr x 151,889 ops/sec ±0.27% (96 runs sampled)\n🤞 cbor-x x 191,010 ops/sec ±0.44% (96 runs sampled)\n🤞 msgpack-lite x 93,537 ops/sec ±0.68% (99 runs sampled)\n🤞 msgpack5 x 28,581 ops/sec ±1.74% (93 runs sampled)\n🤞 messagepack x 8,330 ops/sec ±5.00% (61 runs sampled)\nFastest is 🤞 json-pack CborEncoderFast\n------------------------------------------------------------------------- String ladder, 3398 bytes\n🤞 json-pack JsonEncoder x 147,755 ops/sec ±0.23% (97 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 128,378 ops/sec ±0.15% (96 runs sampled)\n🤞 json-pack CborEncoderFast x 298,037 ops/sec ±0.73% (98 runs sampled)\n🤞 json-pack CborEncoder x 293,608 ops/sec ±0.22% (97 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 244,864 ops/sec ±3.92% (92 runs sampled)\n🤞 JSON.stringify() x 165,819 ops/sec ±1.72% (94 runs sampled)\n🤞 @msgpack/msgpack x 79,127 ops/sec ±1.43% (93 runs sampled)\n🤞 msgpackr x 236,254 ops/sec ±1.45% (94 runs sampled)\n🤞 cbor-x x 206,835 ops/sec ±1.26% (92 runs sampled)\n🤞 msgpack-lite x 157,499 ops/sec ±0.39% (98 runs sampled)\n🤞 msgpack5 x 55,363 ops/sec ±2.75% (88 runs sampled)\n🤞 messagepack x 8,261 ops/sec ±2.97% (72 runs sampled)\nFastest is 🤞 json-pack CborEncoderFast\n-------------------------------------------------------------------------- Long strings, 7011 bytes\n🤞 json-pack JsonEncoder x 51,334 ops/sec ±0.16% (99 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 27,108 ops/sec ±4.89% (90 runs sampled)\n🤞 json-pack CborEncoderFast x 374,042 ops/sec ±6.39% (91 runs sampled)\n🤞 json-pack CborEncoder x 424,864 ops/sec ±0.35% (97 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 363,465 ops/sec ±1.91% (85 runs sampled)\n🤞 JSON.stringify() x 59,793 ops/sec ±0.14% (100 runs sampled)\n🤞 @msgpack/msgpack x 57,373 ops/sec ±0.13% (98 runs sampled)\n🤞 msgpackr x 372,751 ops/sec ±2.17% (90 runs sampled)\n🤞 cbor-x x 389,277 ops/sec ±1.60% (93 runs sampled)\n🤞 msgpack-lite x 170,279 ops/sec ±0.82% (97 runs sampled)\n🤞 msgpack5 x 83,809 ops/sec ±2.80% (83 runs sampled)\n🤞 messagepack x 20,076 ops/sec ±1.45% (87 runs sampled)\nFastest is 🤞 json-pack CborEncoder\n-------------------------------------------------------------------------- Short strings, 170 bytes\n🤞 json-pack JsonEncoder x 1,577,757 ops/sec ±0.16% (98 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 1,057,420 ops/sec ±0.38% (100 runs sampled)\n🤞 json-pack CborEncoderFast x 1,844,775 ops/sec ±0.20% (100 runs sampled)\n🤞 json-pack CborEncoder x 1,468,011 ops/sec ±0.23% (98 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 1,240,577 ops/sec ±0.19% (98 runs sampled)\n🤞 JSON.stringify() x 1,852,916 ops/sec ±0.20% (100 runs sampled)\n🤞 @msgpack/msgpack x 781,414 ops/sec ±0.42% (92 runs sampled)\n🤞 msgpackr x 1,672,474 ops/sec ±0.23% (99 runs sampled)\n🤞 cbor-x x 1,351,338 ops/sec ±0.20% (97 runs sampled)\n🤞 msgpack-lite x 416,300 ops/sec ±0.76% (96 runs sampled)\n🤞 msgpack5 x 151,657 ops/sec ±1.97% (91 runs sampled)\n🤞 messagepack x 35,124 ops/sec ±5.60% (61 runs sampled)\nFastest is 🤞 JSON.stringify()\n-------------------------------------------------------------------------------- Numbers, 136 bytes\n🤞 json-pack JsonEncoder x 1,708,133 ops/sec ±1.09% (98 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 1,135,630 ops/sec ±1.67% (95 runs sampled)\n🤞 json-pack CborEncoderFast x 2,658,037 ops/sec ±1.33% (97 runs sampled)\n🤞 json-pack CborEncoder x 3,084,914 ops/sec ±0.24% (101 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 1,620,958 ops/sec ±2.15% (94 runs sampled)\n🤞 JSON.stringify() x 1,602,303 ops/sec ±0.24% (98 runs sampled)\n🤞 @msgpack/msgpack x 997,885 ops/sec ±1.70% (97 runs sampled)\n🤞 msgpackr x 2,659,862 ops/sec ±0.51% (96 runs sampled)\n🤞 cbor-x x 3,116,954 ops/sec ±0.89% (95 runs sampled)\n🤞 msgpack-lite x 892,281 ops/sec ±2.19% (92 runs sampled)\n🤞 msgpack5 x 144,567 ops/sec ±3.06% (88 runs sampled)\n🤞 messagepack x 383,134 ops/sec ±2.95% (74 runs sampled)\nFastest is 🤞 cbor-x\n--------------------------------------------------------------------------------- Tokens, 308 bytes\n🤞 json-pack JsonEncoder x 1,370,517 ops/sec ±0.52% (98 runs sampled)\n🤞 Buffer.from(JSON.stringify()) x 1,016,856 ops/sec ±0.16% (93 runs sampled)\n🤞 json-pack CborEncoderFast x 1,347,193 ops/sec ±0.20% (96 runs sampled)\n🤞 json-pack CborEncoder x 1,353,358 ops/sec ±0.20% (101 runs sampled)\n🤞 json-pack MsgPackEncoderFast x 1,130,418 ops/sec ±0.14% (96 runs sampled)\n🤞 JSON.stringify() x 1,549,669 ops/sec ±0.49% (97 runs sampled)\n🤞 @msgpack/msgpack x 871,477 ops/sec ±0.92% (98 runs sampled)\n🤞 msgpackr x 1,716,378 ops/sec ±0.20% (99 runs sampled)\n🤞 cbor-x x 1,951,639 ops/sec ±0.16% (100 runs sampled)\n🤞 msgpack-lite x 622,495 ops/sec ±1.03% (96 runs sampled)\n🤞 msgpack5 x 81,727 ops/sec ±2.04% (91 runs sampled)\n🤞 messagepack x 609,651 ops/sec ±1.64% (89 runs sampled)\nFastest is 🤞 cbor-x\n```\n\nDecoding:\n\n```\nnode benchmarks/json-pack/bench.decoding.js\n=============================================================================== Benchmark: Decoding\nWarmup: 1000x , Node.js: v16.14.2 , Arch: arm64 , CPU: Apple M1\n-------------------------------------------------------------------- Very large object, 45750 bytes\n👍 JSON.parse() x 3,506 ops/sec ±0.19% (100 runs sampled)\n👍 sjson.parse() x 3,336 ops/sec ±0.11% (99 runs sampled)\n👍 json-pack CborDecoderBase x 4,915 ops/sec ±0.18% (100 runs sampled)\n👍 cbor-x x 4,747 ops/sec ±0.15% (100 runs sampled)\n👍 cbor x 260 ops/sec ±0.29% (90 runs sampled)\n👍 json-pack MsgPackDecoderFast x 5,506 ops/sec ±0.48% (100 runs sampled)\n👍 msgpackr x 4,729 ops/sec ±0.23% (101 runs sampled)\n👍 @msgpack/msgpack x 4,096 ops/sec ±0.25% (100 runs sampled)\n👍 msgpack5 x 920 ops/sec ±0.34% (99 runs sampled)\n👍 msgpack-lite x 1,223 ops/sec ±0.10% (100 runs sampled)\n👍 messagepack x 194 ops/sec ±1.93% (73 runs sampled)\nFastest is 👍 json-pack MsgPackDecoderFast\n-------------------------------------------------------------------------- Large object, 3741 bytes\n👍 JSON.parse() x 91,582 ops/sec ±0.30% (100 runs sampled)\n👍 sjson.parse() x 84,411 ops/sec ±0.16% (99 runs sampled)\n👍 json-pack CborDecoderBase x 94,618 ops/sec ±0.27% (97 runs sampled)\n👍 cbor-x x 108,102 ops/sec ±0.37% (101 runs sampled)\n👍 cbor x 4,845 ops/sec ±0.79% (95 runs sampled)\n👍 json-pack MsgPackDecoderFast x 102,544 ops/sec ±0.39% (99 runs sampled)\n👍 msgpackr x 111,668 ops/sec ±0.16% (101 runs sampled)\n👍 @msgpack/msgpack x 56,952 ops/sec ±0.51% (97 runs sampled)\n👍 msgpack5 x 17,420 ops/sec ±0.60% (101 runs sampled)\n👍 msgpack-lite x 20,536 ops/sec ±0.23% (98 runs sampled)\n👍 messagepack x 3,247 ops/sec ±2.30% (87 runs sampled)\nFastest is 👍 msgpackr\n------------------------------------------------------------------------- Typical object, 993 bytes\n👍 JSON.parse() x 304,670 ops/sec ±0.98% (97 runs sampled)\n👍 sjson.parse() x 283,259 ops/sec ±0.20% (98 runs sampled)\n👍 json-pack CborDecoderBase x 298,666 ops/sec ±0.19% (100 runs sampled)\n👍 cbor-x x 322,995 ops/sec ±0.71% (97 runs sampled)\n👍 cbor x 14,391 ops/sec ±0.88% (95 runs sampled)\n👍 json-pack MsgPackDecoderFast x 321,984 ops/sec ±0.23% (100 runs sampled)\n👍 msgpackr x 328,671 ops/sec ±0.31% (99 runs sampled)\n👍 @msgpack/msgpack x 198,604 ops/sec ±0.85% (96 runs sampled)\n👍 msgpack5 x 51,549 ops/sec ±0.32% (99 runs sampled)\n👍 msgpack-lite x 67,171 ops/sec ±0.19% (99 runs sampled)\n👍 messagepack x 9,464 ops/sec ±1.95% (92 runs sampled)\nFastest is 👍 msgpackr\n---------------------------------------------------------------------------- Small object, 44 bytes\n👍 JSON.parse() x 2,654,389 ops/sec ±0.28% (98 runs sampled)\n👍 sjson.parse() x 2,325,941 ops/sec ±0.21% (98 runs sampled)\n👍 json-pack CborDecoderBase x 3,357,402 ops/sec ±0.31% (99 runs sampled)\n👍 cbor-x x 4,133,737 ops/sec ±0.29% (101 runs sampled)\n👍 cbor x 112,776 ops/sec ±5.79% (88 runs sampled)\n👍 json-pack MsgPackDecoderFast x 3,359,127 ops/sec ±0.56% (98 runs sampled)\n👍 msgpackr x 3,436,592 ops/sec ±0.35% (97 runs sampled)\n👍 @msgpack/msgpack x 2,288,251 ops/sec ±0.52% (94 runs sampled)\n👍 msgpack5 x 377,061 ops/sec ±0.67% (96 runs sampled)\n👍 msgpack-lite x 872,569 ops/sec ±0.31% (100 runs sampled)\n👍 messagepack x 116,422 ops/sec ±1.84% (86 runs sampled)\nFastest is 👍 cbor-x\n------------------------------------------------------------------ Object with many keys, 969 bytes\n👍 JSON.parse() x 270,312 ops/sec ±0.57% (98 runs sampled)\n👍 sjson.parse() x 242,328 ops/sec ±3.10% (97 runs sampled)\n👍 json-pack CborDecoderBase x 81,403 ops/sec ±0.42% (96 runs sampled)\n👍 cbor-x x 93,131 ops/sec ±0.48% (99 runs sampled)\n👍 cbor x 8,760 ops/sec ±0.93% (95 runs sampled)\n👍 json-pack MsgPackDecoderFast x 84,014 ops/sec ±0.31% (96 runs sampled)\n👍 msgpackr x 91,477 ops/sec ±0.77% (90 runs sampled)\n👍 @msgpack/msgpack x 73,089 ops/sec ±0.56% (89 runs sampled)\n👍 msgpack5 x 23,468 ops/sec ±0.72% (97 runs sampled)\n👍 msgpack-lite x 34,630 ops/sec ±0.48% (100 runs sampled)\n👍 messagepack x 6,161 ops/sec ±1.77% (86 runs sampled)\nFastest is 👍 JSON.parse()\n------------------------------------------------------------------------- String ladder, 3398 bytes\n👍 JSON.parse() x 287,387 ops/sec ±0.36% (99 runs sampled)\n👍 sjson.parse() x 192,836 ops/sec ±0.40% (95 runs sampled)\n👍 json-pack CborDecoderBase x 177,787 ops/sec ±0.48% (98 runs sampled)\n👍 cbor-x x 320,303 ops/sec ±0.51% (94 runs sampled)\n👍 cbor x 15,416 ops/sec ±0.61% (94 runs sampled)\n👍 json-pack MsgPackDecoderFast x 179,625 ops/sec ±0.59% (100 runs sampled)\n👍 msgpackr x 375,452 ops/sec ±0.69% (94 runs sampled)\n👍 @msgpack/msgpack x 36,544 ops/sec ±0.75% (84 runs sampled)\n👍 msgpack5 x 54,428 ops/sec ±0.46% (98 runs sampled)\n👍 msgpack-lite x 25,309 ops/sec ±0.81% (75 runs sampled)\n👍 messagepack x 10,117 ops/sec ±3.99% (82 runs sampled)\nFastest is 👍 msgpackr\n-------------------------------------------------------------------------- Long strings, 7011 bytes\n👍 JSON.parse() x 117,335 ops/sec ±3.32% (89 runs sampled)\n👍 sjson.parse() x 103,275 ops/sec ±0.64% (94 runs sampled)\n👍 json-pack CborDecoderBase x 74,140 ops/sec ±7.50% (81 runs sampled)\n👍 cbor-x x 92,753 ops/sec ±0.78% (96 runs sampled)\n👍 cbor x 24,292 ops/sec ±27.70% (75 runs sampled)\n👍 json-pack MsgPackDecoderFast x 88,124 ops/sec ±1.65% (90 runs sampled)\n👍 msgpackr x 94,352 ops/sec ±0.91% (94 runs sampled)\n👍 @msgpack/msgpack x 33,256 ops/sec ±30.68% (71 runs sampled)\n👍 msgpack5 x 68,367 ops/sec ±0.70% (95 runs sampled)\n👍 msgpack-lite x 14,764 ops/sec ±2.04% (63 runs sampled)\n👍 messagepack x 17,522 ops/sec ±28.57% (66 runs sampled)\nFastest is 👍 JSON.parse()\n-------------------------------------------------------------------------- Short strings, 170 bytes\n👍 JSON.parse() x 1,077,084 ops/sec ±6.88% (77 runs sampled)\n👍 sjson.parse() x 837,130 ops/sec ±2.70% (80 runs sampled)\n👍 json-pack CborDecoderBase x 698,901 ops/sec ±4.69% (88 runs sampled)\n👍 cbor-x x 1,182,303 ops/sec ±0.39% (94 runs sampled)\n👍 cbor x 26,810 ops/sec ±14.70% (73 runs sampled)\n👍 json-pack MsgPackDecoderFast x 742,562 ops/sec ±5.06% (88 runs sampled)\n👍 msgpackr x 1,041,143 ops/sec ±2.66% (85 runs sampled)\n👍 @msgpack/msgpack x 440,652 ops/sec ±1.38% (92 runs sampled)\n👍 msgpack5 x 133,387 ops/sec ±1.14% (96 runs sampled)\n👍 msgpack-lite x 206,844 ops/sec ±0.63% (97 runs sampled)\n👍 messagepack x 23,818 ops/sec ±2.13% (94 runs sampled)\nFastest is 👍 cbor-x,👍 JSON.parse()\n-------------------------------------------------------------------------------- Numbers, 136 bytes\n👍 JSON.parse() x 1,747,460 ops/sec ±0.61% (95 runs sampled)\n👍 sjson.parse() x 1,553,635 ops/sec ±1.04% (93 runs sampled)\n👍 json-pack CborDecoderBase x 2,289,002 ops/sec ±0.93% (87 runs sampled)\n👍 cbor-x x 3,775,727 ops/sec ±2.86% (82 runs sampled)\n👍 cbor x 77,650 ops/sec ±4.32% (83 runs sampled)\n👍 json-pack MsgPackDecoderFast x 2,287,682 ops/sec ±1.54% (80 runs sampled)\n👍 msgpackr x 3,391,489 ops/sec ±0.59% (80 runs sampled)\n👍 @msgpack/msgpack x 2,297,255 ops/sec ±1.54% (78 runs sampled)\n👍 msgpack5 x 112,373 ops/sec ±1.19% (91 runs sampled)\n👍 msgpack-lite x 1,378,387 ops/sec ±0.84% (95 runs sampled)\n👍 messagepack x 1,174,740 ops/sec ±0.97% (89 runs sampled)\nFastest is 👍 cbor-x\n--------------------------------------------------------------------------------- Tokens, 308 bytes\n👍 JSON.parse() x 1,303,300 ops/sec ±2.26% (92 runs sampled)\n👍 sjson.parse() x 1,091,921 ops/sec ±2.85% (86 runs sampled)\n👍 json-pack CborDecoderBase x 1,203,319 ops/sec ±2.12% (90 runs sampled)\n👍 cbor-x x 1,787,591 ops/sec ±2.94% (74 runs sampled)\n👍 cbor x 45,127 ops/sec ±24.11% (64 runs sampled)\n👍 json-pack MsgPackDecoderFast x 1,283,322 ops/sec ±1.93% (94 runs sampled)\n👍 msgpackr x 1,890,533 ops/sec ±2.66% (90 runs sampled)\n👍 @msgpack/msgpack x 1,364,025 ops/sec ±3.78% (67 runs sampled)\n👍 msgpack5 x 117,205 ops/sec ±2.72% (90 runs sampled)\n👍 msgpack-lite x 1,316,133 ops/sec ±0.74% (99 runs sampled)\n👍 messagepack x 733,566 ops/sec ±1.55% (87 runs sampled)\nFastest is 👍 msgpackr\n```\n\nEncoder comparison:\n\n```\nnpx ts-node benchmarks/json-pack/bench.encoders.ts\n=============================================================================== Benchmark: Encoding\nWarmup: 1000x , Node.js: v20.2.0 , Arch: arm64 , CPU: Apple M1 Max\n---------------------------------------------------------------------------- Small object, 44 bytes\n👍 CborEncoderFast x 6,319,117 ops/sec ±0.11% (101 runs sampled)\n👍 CborEncoder x 6,001,443 ops/sec ±0.15% (101 runs sampled)\n👎 MsgPackEncoderFast x 6,047,466 ops/sec ±0.20% (99 runs sampled)\n👎 MsgPackEncoder x 5,493,093 ops/sec ±0.10% (101 runs sampled)\n👎 JsonEncoder x 6,018,890 ops/sec ±0.11% (97 runs sampled)\n👎 UbjsonEncoder x 6,545,118 ops/sec ±0.10% (97 runs sampled)\n👎 IonEncoderFast x 1,032,434 ops/sec ±0.14% (99 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 2,300,069 ops/sec ±0.15% (100 runs sampled)\nFastest is 👎 UbjsonEncoder\n------------------------------------------------------------------------- Typical object, 993 bytes\n👍 CborEncoderFast x 460,125 ops/sec ±0.14% (98 runs sampled)\n👍 CborEncoder x 439,506 ops/sec ±0.18% (98 runs sampled)\n👎 MsgPackEncoderFast x 458,530 ops/sec ±0.15% (99 runs sampled)\n👎 MsgPackEncoder x 449,540 ops/sec ±0.16% (100 runs sampled)\n👎 JsonEncoder x 303,410 ops/sec ±0.12% (101 runs sampled)\n👎 UbjsonEncoder x 479,450 ops/sec ±0.13% (99 runs sampled)\n👎 IonEncoderFast x 68,000 ops/sec ±0.11% (102 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 207,747 ops/sec ±0.11% (98 runs sampled)\nFastest is 👎 UbjsonEncoder\n-------------------------------------------------------------------------- Large object, 3741 bytes\n👍 CborEncoderFast x 133,608 ops/sec ±0.15% (100 runs sampled)\n👍 CborEncoder x 128,019 ops/sec ±0.13% (97 runs sampled)\n👎 MsgPackEncoderFast x 133,863 ops/sec ±0.14% (99 runs sampled)\n👎 MsgPackEncoder x 131,521 ops/sec ±0.18% (99 runs sampled)\n👎 JsonEncoder x 93,018 ops/sec ±0.13% (98 runs sampled)\n👎 UbjsonEncoder x 140,969 ops/sec ±0.15% (101 runs sampled)\n👎 IonEncoderFast x 11,523 ops/sec ±0.15% (101 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 63,389 ops/sec ±0.13% (101 runs sampled)\nFastest is 👎 UbjsonEncoder\n-------------------------------------------------------------------- Very large object, 45750 bytes\n👍 CborEncoderFast x 5,790 ops/sec ±0.15% (100 runs sampled)\n👍 CborEncoder x 5,579 ops/sec ±0.14% (100 runs sampled)\n👎 MsgPackEncoderFast x 6,005 ops/sec ±0.13% (100 runs sampled)\n👎 MsgPackEncoder x 5,670 ops/sec ±0.18% (99 runs sampled)\n👎 JsonEncoder x 6,351 ops/sec ±0.16% (101 runs sampled)\n👎 UbjsonEncoder x 6,248 ops/sec ±0.18% (99 runs sampled)\n👎 IonEncoderFast x 1,868 ops/sec ±0.21% (98 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 7,240 ops/sec ±0.19% (99 runs sampled)\nFastest is 👎 Buffer.from(JSON.stringify())\n------------------------------------------------------------------ Object with many keys, 969 bytes\n👍 CborEncoderFast x 283,371 ops/sec ±0.18% (99 runs sampled)\n👍 CborEncoder x 268,056 ops/sec ±0.17% (96 runs sampled)\n👎 MsgPackEncoderFast x 285,224 ops/sec ±0.17% (96 runs sampled)\n👎 MsgPackEncoder x 272,416 ops/sec ±0.21% (98 runs sampled)\n👎 JsonEncoder x 234,921 ops/sec ±0.21% (98 runs sampled)\n👎 UbjsonEncoder x 292,228 ops/sec ±0.19% (95 runs sampled)\n👎 IonEncoderFast x 63,456 ops/sec ±0.14% (98 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 175,341 ops/sec ±0.86% (93 runs sampled)\nFastest is 👎 UbjsonEncoder\n------------------------------------------------------------------------- String ladder, 3398 bytes\n👍 CborEncoderFast x 280,167 ops/sec ±0.20% (100 runs sampled)\n👍 CborEncoder x 283,404 ops/sec ±0.20% (97 runs sampled)\n👎 MsgPackEncoderFast x 272,800 ops/sec ±0.18% (99 runs sampled)\n👎 MsgPackEncoder x 283,433 ops/sec ±0.23% (98 runs sampled)\n👎 JsonEncoder x 147,390 ops/sec ±0.16% (98 runs sampled)\n👎 UbjsonEncoder x 290,624 ops/sec ±0.21% (98 runs sampled)\n👎 IonEncoderFast x 25,452 ops/sec ±0.17% (101 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 145,352 ops/sec ±0.23% (99 runs sampled)\nFastest is 👎 UbjsonEncoder\n-------------------------------------------------------------------------- Long strings, 7011 bytes\n👍 CborEncoderFast x 394,386 ops/sec ±0.53% (95 runs sampled)\n👍 CborEncoder x 394,442 ops/sec ±0.49% (94 runs sampled)\n👎 MsgPackEncoderFast x 386,894 ops/sec ±0.54% (95 runs sampled)\n👎 MsgPackEncoder x 394,019 ops/sec ±0.50% (95 runs sampled)\n👎 JsonEncoder x 50,781 ops/sec ±0.13% (97 runs sampled)\n👎 UbjsonEncoder x 396,184 ops/sec ±0.57% (95 runs sampled)\n👎 IonEncoderFast x 11,799 ops/sec ±0.22% (99 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 28,742 ops/sec ±0.11% (102 runs sampled)\nFastest is 👎 UbjsonEncoder,👍 CborEncoder,👍 CborEncoderFast,👎 MsgPackEncoder\n-------------------------------------------------------------------------- Short strings, 170 bytes\n👍 CborEncoderFast x 1,816,742 ops/sec ±0.16% (100 runs sampled)\n👍 CborEncoder x 1,831,503 ops/sec ±0.22% (97 runs sampled)\n👎 MsgPackEncoderFast x 1,641,743 ops/sec ±0.17% (101 runs sampled)\n👎 MsgPackEncoder x 1,694,803 ops/sec ±0.17% (97 runs sampled)\n👎 JsonEncoder x 1,595,041 ops/sec ±0.12% (99 runs sampled)\n👎 UbjsonEncoder x 1,779,112 ops/sec ±0.24% (98 runs sampled)\n👎 IonEncoderFast x 422,031 ops/sec ±0.10% (101 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 1,001,976 ops/sec ±0.24% (98 runs sampled)\nFastest is 👍 CborEncoder\n-------------------------------------------------------------------------------- Numbers, 136 bytes\n👍 CborEncoderFast x 2,822,683 ops/sec ±0.14% (99 runs sampled)\n👍 CborEncoder x 3,111,311 ops/sec ±0.20% (97 runs sampled)\n👎 MsgPackEncoderFast x 2,918,971 ops/sec ±0.14% (100 runs sampled)\n👎 MsgPackEncoder x 2,862,193 ops/sec ±0.13% (100 runs sampled)\n👎 JsonEncoder x 1,706,584 ops/sec ±0.18% (96 runs sampled)\n👎 UbjsonEncoder x 3,238,810 ops/sec ±0.15% (97 runs sampled)\n👎 IonEncoderFast x 545,885 ops/sec ±0.16% (98 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 1,216,907 ops/sec ±0.20% (98 runs sampled)\nFastest is 👎 UbjsonEncoder\n--------------------------------------------------------------------------------- Tokens, 308 bytes\n👍 CborEncoderFast x 1,360,976 ops/sec ±0.20% (96 runs sampled)\n👍 CborEncoder x 1,367,625 ops/sec ±0.16% (101 runs sampled)\n👎 MsgPackEncoderFast x 1,753,202 ops/sec ±0.19% (99 runs sampled)\n👎 MsgPackEncoder x 1,733,298 ops/sec ±0.16% (100 runs sampled)\n👎 JsonEncoder x 1,411,382 ops/sec ±0.27% (98 runs sampled)\n👎 UbjsonEncoder x 1,734,304 ops/sec ±0.17% (101 runs sampled)\n👎 IonEncoderFast x 369,161 ops/sec ±0.21% (97 runs sampled)\n👎 Buffer.from(JSON.stringify()) x 1,092,623 ops/sec ±0.15% (101 runs sampled)\nFastest is 👎 MsgPackEncoderFast\n```\n\n\n### Shallow reading\n\n```\nnode benchmarks/json-pack/bench.shallow-read.js\n=============================================================================== Benchmark: Encoding\nWarmup: 10000x , Node.js: v16.14.2 , Arch: arm64 , CPU: Apple M1\n------------------------------------------------------------------------- Typical object, 993 bytes\n👍 JSON.parse() x 314,451 ops/sec ±0.24% (94 runs sampled)\n👍 msgpackr x 332,628 ops/sec ±0.09% (99 runs sampled)\n👍 cbor-x x 326,509 ops/sec ±0.05% (101 runs sampled)\n👍 MsgPackDecoder x 368,088 ops/sec ±0.15% (100 runs sampled)\n👍 CborDecoder x 327,286 ops/sec ±0.15% (101 runs sampled)\n👍 MsgPackDecoder.{findKey,findIndex}() x 1,815,090 ops/sec ±0.07% (99 runs sampled)\n👍 MsgPackDecoder.find() x 1,797,098 ops/sec ±0.15% (98 runs sampled)\n👍 genShallowReader()(MsgPackDecoder) x 2,085,260 ops/sec ±0.19% (99 runs sampled)\nFastest is 👍 genShallowReader()(MsgPackDecoder)\n```\n","funding_links":["https://github.com/sponsors/streamich"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsonjoy-com%2Fjson-pack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsonjoy-com%2Fjson-pack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsonjoy-com%2Fjson-pack/lists"}