Skip to content

Repository files navigation

Rust serialization benchmark

The goal of these benchmarks is to provide thorough and complete benchmarks for various rust serialization frameworks.

Maintainers

These benchmarks are maintained by a small group of volunteers. Special thanks to:

These benchmarks are a work in progress

These benchmarks are still being developed and pull requests to improve benchmarks are welcome.

Calculate the number of messages per second that can be sent/received with various rust serialization frameworks and compression libraries. Documentation

Format

All tests benchmark the following properties (time or size):

  • Serialize: serialize data into a buffer
  • Deserialize: deserializes a buffer into a normal rust object
  • Borrow: deserializes a buffer into a rust object that borrows string data from the input, with lifetime
  • Size: the size of the buffer when serialized
  • Zlib: the size of the buffer after zlib compression
  • Zstd: the size of the buffer after zstd compression
  • Zstd Time: the time taken to compress the serialized buffer with zstd

Zero-copy deserialization libraries have an additional set of benchmarks:

  • Access: accesses a buffer as structured data
  • Read: runs through a buffer and reads fields out of it
  • Update: updates a buffer as structured data

Some benchmark results may be italicized and followed by an asterisk. Mouse over these for more details on what situation was benchmarked. Some common terms for those variants:

  • (populate): copying or converting from the "regular" input type to the type generated by the library
  • (convert): copying or converting back from the library's generated type to the "regular" input type after deserializing

Other footnotes are located at the bottom of the page.

Last updated: 2026-08-07 04:09:55

Runtime info

rustc version

rustc 1.99.0-nightly (84b36a78a 2026-08-06)
binary: rustc
commit-hash: 84b36a78a28a63f134171c670be1932ffa2485f8
commit-date: 2026-08-06
host: x86_64-unknown-linux-gnu
release: 1.99.0-nightly
LLVM version: 23.1.0

CPU info

Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           48 bits physical, 48 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  4
On-line CPU(s) list:                     0-3
Vendor ID:                               AuthenticAMD
Model name:                              AMD EPYC 9V74 80-Core Processor
CPU family:                              25
Model:                                   17
Thread(s) per core:                      2
Core(s) per socket:                      2
Socket(s):                               1
Stepping:                                1
BogoMIPS:                                5192.24
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves user_shstk avx512_bf16 clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm
Virtualization:                          AMD-V
Hypervisor vendor:                       Microsoft
Virtualization type:                     full
L1d cache:                               64 KiB (2 instances)
L1i cache:                               64 KiB (2 instances)
L2 cache:                                2 MiB (2 instances)
L3 cache:                                32 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-3
Vulnerability Gather data sampling:      Not affected
Vulnerability Ghostwrite:                Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Old microcode:             Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass:         Vulnerable
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Vulnerable: No microcode
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

log

This data set is composed of HTTP request logs that are small and contain many strings.

Raw data

For operations, time per iteration; for size, bytes. Lower is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Borrow Size Zlib Zstd Zstd Time
bilrost 0.1015.0 332.38 µs* 276.04 µs* 2.0963 ms 740.93 µs 804955 328941 284849 3.1077 ms
bin-proto 0.12.8 3.4356 ms 3.6508 ms 1045784 373127 311553 3.4072 ms
bincode 2.0.1 293.11 µs 1.7504 ms 569.45 µs 741295 303944 256422 2.8281 ms
bincode 1.3.3 464.75 µs 1.6158 ms 495.21 µs 1045784 373127 311553 3.6551 ms
bitcode 0.6.9 95.792 µs 1.1430 ms 48.788 µs 703710 288826 227322 1.9864 ms
borsh 1.8.0 481.77 µs 1.6997 ms 885780 362204 286248 3.1120 ms
capnp:
capnp 0.27.0
480.71 µs 1.2260 ms* 1443216 1046865* 513986 481681* 426532 458024* 4.5376 ms 4.2114 ms*
cbor:
cbor4ii 1.2.2
434.41 µs 4.2607 ms 3.0099 ms 1407835 403440 323561 3.5488 ms
cbor:
ciborium 0.2.2
2.4626 ms 10.694 ms 1407835 403440 323561 3.5892 ms
cbor:
serde_cbor 0.11.2
1.5733 ms 3.6718 ms 2.4975 ms 1407835 403440 323561 3.5631 ms
columnar 0.13.1 184.99 µs 1.7061 ms 630.09 µs* 1045928 370212 293907 3.0797 ms
compactly 0.1.7 20.356 ms 13.831 ms 239520 239720 239532 119.02 µs
databuf 0.5.0 203.89 µs 1.6205 ms 574.48 µs 765778 311715 263914 2.5096 ms
dlhn 0.1.7 584.33 µs 2.0570 ms 724953 301446 253056 2.3005 ms
flatbuffers 25.12.19 757.19 µs 1276368 468539 388381 3.6139 ms
flexbuffers 25.12.19 5.2451 ms 6.0013 ms 4.9118 ms 1829756 714318 691541 6.2047 ms
json:
flexon 0.4.8
1.8931 ms 2.9340 ms 1827461 470560 360727 4.1817 ms
json:
serde_json 1.0.151
3.2065 ms 4.9455 ms 1827461 470560 360727 4.2973 ms
json:
simd-json 0.17.3
1.9662 ms 3.7286 ms 1827461 470560 360727 4.1703 ms
messagepack:
msgpacker 0.7.1
261.19 µs 2.0569 ms 773.14 µs 764996 315291 264212 2.5870 ms
messagepack:
rmp-serde 1.3.1
1.2639 ms 2.4896 ms 1.0900 ms 784997 325384 277608 2.7339 ms
messagepack:
zerompk 0.7.1
288.48 µs 1.7481 ms 572.64 µs 784997 325384 277608 2.7242 ms
minicbor 2.3.0 397.34 µs 2.3760 ms 1.0544 ms 817830 332671 284034 2.9421 ms
nachricht-serde 0.4.0 4.3798 ms 3.2788 ms 2.0819 ms 818669 332556 284797 2.9332 ms
nanoserde 0.2.1 186.65 µs 1.7605 ms 1045784 373127 311553 3.1287 ms
nibblecode 0.1.0 137.19 µs 1011487 492118 426148 3.9627 ms
postcard 1.1.3 365.36 µs 1.8405 ms 612.43 µs 724953 302399 252968 2.3287 ms
pot 3.0.1 1.9031 ms 4.7888 ms 3.7534 ms 971922 372513 303636 3.2803 ms
protobuf:
buffa 0.9.1
703.06 µs* 1.8673 ms* 2.7970 ms* 2.8747 ms* 1.5411 ms 884628 363130 314959 3.1603 ms
protobuf:
prost 0.14.4
700.48 µs* 1.8931 ms* 2.7285 ms* 2.7499 ms* 884628 363130 314959 3.2108 ms
protobuf:
protobuf 3.7.2
839.06 µs* 2.2992 ms* 3.1676 ms* 3.2012 ms* 884628 363130 314959 3.1756 ms
protobuf:
protobuf 4.35.1-release
1.3708 ms* 5.5955 ms* 5.9706 ms* 2.4620 ms* 884628 363130 314959 3.2565 ms
rkyv 0.8.18 179.32 µs 1.2328 ms* 1.5322 ms* 1011488 393526 325965 3.3651 ms
ron 0.12.2 9.0529 ms 23.703 ms 21.214 ms 1607459 449158 349324 4.2910 ms
savefile 0.20.5 155.45 µs 1.6762 ms 1045800 373139 311562 3.1057 ms
scale:
parity-scale-codec 3.7.5
556.29 µs 1.9617 ms 765778 311743 263822 2.6219 ms
serde-brief 0.2.0 1.2159 ms 3.9039 ms 2.3407 ms 1584946 413733 339964 3.7912 ms
serde-zap 0.1.0 141.96 µs 1.7669 ms 436.42 µs 741295 303944 256422 2.4197 ms
serde_bare 0.5.0 569.74 µs 1.6500 ms 765778 311715 263914 2.5447 ms
speedy 0.8.7 153.12 µs 1.3994 ms 300.55 µs 885780 362204 286248 2.8370 ms
wincode 0.6.0 140.61 µs 1.4340 ms 302.08 µs 1045784 373127 311553 3.0649 ms
wiring 0.2.4 141.66 µs 1.6786 ms 1045784 337930 275808 2.7161 ms

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
63.567 ns* 845.44 µs* 117.86 µs*
columnar 0.13.1 8.4204 ns
flatbuffers 25.12.19 2.1816 ns* 1.9122 ms* 42.081 µs* 2.0007 ms*
nibblecode 0.1.0 1.0911 ns* 74.981 µs* 8.3467 µs* 83.206 µs* 4.8732 µs*
rkyv 0.8.18 1.0914 ns* 292.13 µs* 8.3417 µs* 300.46 µs* 4.8604 µs*

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Borrow Size Zlib Zstd Zstd Time
bilrost 0.1015.0 28.82%* 34.70%* 30.06% 6.58% 29.76% 72.88% 79.80% 3.83%
bin-proto 0.12.8 2.79% 17.26% 22.90% 64.25% 72.96% 3.49%
bincode 2.0.1 32.68% 36.00% 8.57% 32.31% 78.87% 88.65% 4.21%
bincode 1.3.3 20.61% 39.00% 9.85% 22.90% 64.25% 72.96% 3.26%
bitcode 0.6.9 100.00% 55.13% 100.00% 34.04% 83.00% 100.00% 5.99%
borsh 1.8.0 19.88% 37.07% 27.04% 66.18% 79.41% 3.82%
capnp:
capnp 0.27.0
19.93% 7.81%* 16.60% 22.88%* 46.64% 49.77%* 53.30% 49.63%* 2.62% 2.83%*
cbor:
cbor4ii 1.2.2
22.05% 14.79% 1.62% 17.01% 59.42% 70.26% 3.35%
cbor:
ciborium 0.2.2
3.89% 5.89% 17.01% 59.42% 70.26% 3.32%
cbor:
serde_cbor 0.11.2
6.09% 17.16% 1.95% 17.01% 59.42% 70.26% 3.34%
columnar 0.13.1 51.78% 36.93% 100.00%* 22.90% 64.75% 77.34% 3.86%
compactly 0.1.7 0.47% 4.56% 100.00% 100.00% 94.90% 100.00%
databuf 0.5.0 46.98% 38.88% 8.49% 31.28% 76.90% 86.13% 4.74%
dlhn 0.1.7 16.39% 30.63% 33.04% 79.52% 89.83% 5.17%
flatbuffers 25.12.19 12.65% 18.77% 51.16% 58.53% 3.29%
flexbuffers 25.12.19 1.83% 10.50% 0.99% 13.09% 33.56% 32.87% 1.92%
json:
flexon 0.4.8
5.06% 21.48% 13.11% 50.94% 63.02% 2.85%
json:
serde_json 1.0.151
2.99% 12.74% 13.11% 50.94% 63.02% 2.77%
json:
simd-json 0.17.3
4.87% 16.90% 13.11% 50.94% 63.02% 2.85%
messagepack:
msgpacker 0.7.1
36.68% 30.63% 6.31% 31.31% 76.03% 86.04% 4.60%
messagepack:
rmp-serde 1.3.1
7.58% 25.31% 4.48% 30.51% 73.67% 81.89% 4.35%
messagepack:
zerompk 0.7.1
33.21% 36.04% 8.52% 30.51% 73.67% 81.89% 4.37%
minicbor 2.3.0 24.11% 26.52% 4.63% 29.29% 72.06% 80.03% 4.05%
nachricht-serde 0.4.0 2.19% 19.22% 2.34% 29.26% 72.08% 79.82% 4.06%
nanoserde 0.2.1 51.32% 35.79% 22.90% 64.25% 72.96% 3.80%
nibblecode 0.1.0 69.82% 23.68% 48.71% 53.34% 3.00%
postcard 1.1.3 26.22% 34.23% 7.97% 33.04% 79.27% 89.86% 5.11%
pot 3.0.1 5.03% 13.16% 1.30% 24.64% 64.35% 74.87% 3.63%
protobuf:
buffa 0.9.1
13.63%* 5.13%* 22.53%* 21.92%* 3.17% 27.08% 66.01% 72.18% 3.77%
protobuf:
prost 0.14.4
13.68%* 5.06%* 23.09%* 22.91%* 27.08% 66.01% 72.18% 3.71%
protobuf:
protobuf 3.7.2
11.42%* 4.17%* 19.89%* 19.68%* 27.08% 66.01% 72.18% 3.75%
protobuf:
protobuf 4.35.1-release
6.99%* 1.71%* 10.55%* 25.59%* 27.08% 66.01% 72.18% 3.65%
rkyv 0.8.18 53.42% 51.11%* 41.12%* 23.68% 60.92% 69.74% 3.54%
ron 0.12.2 1.06% 2.66% 0.23% 14.90% 53.37% 65.07% 2.77%
savefile 0.20.5 61.62% 37.59% 22.90% 64.24% 72.96% 3.83%
scale:
parity-scale-codec 3.7.5
17.22% 32.12% 31.28% 76.90% 86.16% 4.54%
serde-brief 0.2.0 7.88% 16.14% 2.08% 15.11% 57.94% 66.87% 3.14%
serde-zap 0.1.0 67.48% 35.66% 11.18% 32.31% 78.87% 88.65% 4.92%
serde_bare 0.5.0 16.81% 38.19% 31.28% 76.90% 86.13% 4.68%
speedy 0.8.7 62.56% 45.03% 16.23% 27.04% 66.18% 79.41% 4.20%
wincode 0.6.0 68.13% 43.94% 16.15% 22.90% 64.25% 72.96% 3.88%
wiring 0.2.4 67.62% 37.54% 22.90% 70.94% 82.42% 4.38%

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
1.72%* 0.99%* 7.08%*
columnar 0.13.1 12.96%
flatbuffers 25.12.19 50.01%* 0.00%* 19.82%* 0.42%*
nibblecode 0.1.0 100.00%* 0.00%* 99.94%* 10.03%* 99.74%*
rkyv 0.8.18 99.97%* 0.00%* 100.00%* 2.78%* 100.00%*

mesh

This data set is a single mesh. The mesh contains an array of triangles, each of which has three vertices and a normal vector.

Raw data

For operations, time per iteration; for size, bytes. Lower is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd Zstd Time
bilrost 0.1015.0 4.6159 ms* 4.1995 ms* 5.8136 ms 8625005 6443961 6231572 49.670 ms
bin-proto 0.12.8 6.9785 ms 9.2981 ms 6000008 5378500 5346908 7.2997 ms
bincode 2.0.1 897.61 µs 859.41 µs 6000005 5378497 5346882 7.3744 ms
bincode 1.3.3 4.8569 ms 3.6395 ms 6000008 5378500 5346908 7.2277 ms
bitcode 0.6.9 1.2197 ms 1.2589 ms 6000006 5182295 4921841 11.159 ms
borsh 1.8.0 5.3728 ms 3.7284 ms 6000004 5378496 5346866 7.2775 ms
capnp:
capnp 0.27.0
7.2563 ms 15.988 ms* 14000088 10401737* 7130367 7308001* 6046182 7922110* 57.990 ms 48.345 ms*
cbor:
cbor4ii 1.2.2
4.8428 ms 39.311 ms 13125016 7524114 6757437 65.198 ms
cbor:
ciborium 0.2.2
54.741 ms 98.993 ms 13122324 7524660 6759128 65.417 ms
cbor:
serde_cbor 0.11.2
29.251 ms 28.911 ms 13122324 7524660 6759128 65.268 ms
columnar 0.13.1 1.0981 ms 1.3100 ms 645.51 µs* 6000120 5378435 5347039 7.3915 ms
compactly 0.1.7 296.11 ms 145.84 ms 4846788 4850067 4846905 1.3268 ms
databuf 0.5.0 895.60 µs 4.8664 ms 6000003 5378495 5346897 7.3547 ms
dlhn 0.1.7 5.6320 ms 6.3985 ms 6000003 5378495 5346897 7.4020 ms
flatbuffers 25.12.19 369.91 µs 6000024 5378434 5346878 7.2382 ms
flexbuffers 25.12.19 82.931 ms 74.378 ms 26609424 11901040 12486322 108.83 ms
json:
flexon 0.4.8
59.971 ms 42.856 ms 26192883 9566084 8584671 117.95 ms
json:
serde_json 1.0.151
70.152 ms 83.491 ms 26192883 9566084 8584671 118.16 ms
json:
simd-json 0.17.3
45.963 ms 52.567 ms 26192883 9566084 8584671 117.62 ms
messagepack:
msgpacker 0.7.1
531.50 µs 3.3448 ms 7500005 6058442 6014500 8.8996 ms
messagepack:
rmp-serde 1.3.1
16.572 ms 9.2099 ms 8125006 6494876 6391037 48.156 ms
messagepack:
zerompk 0.7.1
657.03 µs 1.2620 ms 8125006 6494876 6391037 48.036 ms
minicbor 2.3.0 2.3377 ms 9.4651 ms 8125006 6494907 6390894 47.852 ms
nachricht-serde 0.4.0 97.009 ms 19.842 ms 8125037 6493484 6386940 48.901 ms
nanoserde 0.2.1 1.3556 ms 826.91 µs 6000008 5378500 5346908 7.2282 ms
nibblecode 0.1.0 141.61 µs 6000008 5378500 5346908 7.3492 ms
postcard 1.1.3 413.15 µs 5.2258 ms 6000003 5378495 5346897 7.4373 ms
pot 3.0.1 33.192 ms 47.475 ms 10122342 6814618 6852252 57.664 ms
protobuf:
buffa 0.9.1
5.0767 ms* 6.9736 ms* 9.4115 ms* 9.2431 ms* 8750000 6665735 6421877 50.060 ms
protobuf:
prost 0.14.4
5.8614 ms* 6.2948 ms* 9.6383 ms* 9.9551 ms* 8750000 6665735 6421877 50.563 ms
protobuf:
protobuf 3.7.2
11.999 ms* 25.721 ms* 24.086 ms* 24.134 ms* 8750000 6665735 6421877 50.722 ms
protobuf:
protobuf 4.35.1-release
43.796 ms* 99.341 ms* 55.798 ms* 26.677 ms* 8750000 6665735 6421877 54.564 ms
rkyv 0.8.18 140.04 µs 144.93 µs* 145.02 µs* 6000008 5378500 5346872 7.3544 ms
ron 0.12.2 149.87 ms 474.03 ms 22192885 8970395 8137334 112.29 ms
savefile 0.20.5 141.81 µs 141.59 µs 6000024 5378519 5346896 7.3250 ms
scale:
parity-scale-codec 3.7.5
4.8933 ms 3.5113 ms 6000004 5378496 5346866 7.4004 ms
serde-brief 0.2.0 12.580 ms 29.478 ms 15750015 8024540 6813667 67.673 ms
serde-zap 0.1.0 413.02 µs 1.0983 ms 6000005 5378497 5346882 7.4679 ms
serde_bare 0.5.0 5.3686 ms 3.7266 ms 6000003 5378495 5346897 7.2547 ms
speedy 0.8.7 141.52 µs 141.74 µs 6000004 5378496 5346866 7.3912 ms
wincode 0.6.0 148.62 µs 140.71 µs 6000008 5378500 5346908 7.2479 ms
wiring 0.2.4 144.64 µs 274.24 µs 6000008 5378952 5346905 7.2793 ms

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
91.622 ns* 11.431 ms* 1.7358 ms*
columnar 0.13.1 7.1938 ns
flatbuffers 25.12.19 2.1822 ns* 41.461 ns* 36.638 µs* 44.461 µs*
nibblecode 0.1.0 1.0909 ns* 1.2282 ns* 34.098 µs* 34.094 µs* 150.46 µs*
rkyv 0.8.18 1.0937 ns* 4.1032 ns* 34.098 µs* 34.096 µs* 156.67 µs*

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd Zstd Time
bilrost 0.1015.0 3.03%* 3.33%* 2.42% 56.19% 75.27% 77.78% 2.67%
bin-proto 0.12.8 2.01% 1.51% 80.78% 90.18% 90.65% 18.18%
bincode 2.0.1 15.60% 16.37% 80.78% 90.18% 90.65% 17.99%
bincode 1.3.3 2.88% 3.87% 80.78% 90.18% 90.65% 18.36%
bitcode 0.6.9 11.48% 11.18% 80.78% 93.59% 98.48% 11.89%
borsh 1.8.0 2.61% 3.77% 80.78% 90.18% 90.65% 18.23%
capnp:
capnp 0.27.0
1.93% 0.88%* 34.62% 46.60%* 68.02% 66.37%* 80.16% 61.18%* 2.29% 2.74%*
cbor:
cbor4ii 1.2.2
2.89% 0.36% 36.93% 64.46% 71.73% 2.04%
cbor:
ciborium 0.2.2
0.26% 0.14% 36.94% 64.46% 71.71% 2.03%
cbor:
serde_cbor 0.11.2
0.48% 0.49% 36.94% 64.46% 71.71% 2.03%
columnar 0.13.1 12.75% 10.74% 21.80%* 80.78% 90.18% 90.65% 17.95%
compactly 0.1.7 0.05% 0.10% 100.00% 100.00% 100.00% 100.00%
databuf 0.5.0 15.64% 2.89% 80.78% 90.18% 90.65% 18.04%
dlhn 0.1.7 2.49% 2.20% 80.78% 90.18% 90.65% 17.92%
flatbuffers 25.12.19 37.86% 80.78% 90.18% 90.65% 18.33%
flexbuffers 25.12.19 0.17% 0.19% 18.21% 40.75% 38.82% 1.22%
json:
flexon 0.4.8
0.23% 0.33% 18.50% 50.70% 56.46% 1.12%
json:
serde_json 1.0.151
0.20% 0.17% 18.50% 50.70% 56.46% 1.12%
json:
simd-json 0.17.3
0.30% 0.27% 18.50% 50.70% 56.46% 1.13%
messagepack:
msgpacker 0.7.1
26.35% 4.21% 64.62% 80.05% 80.59% 14.91%
messagepack:
rmp-serde 1.3.1
0.85% 1.53% 59.65% 74.68% 75.84% 2.76%
messagepack:
zerompk 0.7.1
21.31% 11.15% 59.65% 74.68% 75.84% 2.76%
minicbor 2.3.0 5.99% 1.49% 59.65% 74.67% 75.84% 2.77%
nachricht-serde 0.4.0 0.14% 0.71% 59.65% 74.69% 75.89% 2.71%
nanoserde 0.2.1 10.33% 17.02% 80.78% 90.18% 90.65% 18.36%
nibblecode 0.1.0 98.89% 80.78% 90.18% 90.65% 18.05%
postcard 1.1.3 33.90% 2.69% 80.78% 90.18% 90.65% 17.84%
pot 3.0.1 0.42% 0.30% 47.88% 71.17% 70.73% 2.30%
protobuf:
buffa 0.9.1
2.76%* 2.01%* 1.50%* 1.52%* 55.39% 72.76% 75.47% 2.65%
protobuf:
prost 0.14.4
2.39%* 2.22%* 1.46%* 1.41%* 55.39% 72.76% 75.47% 2.62%
protobuf:
protobuf 3.7.2
1.17%* 0.54%* 0.58%* 0.58%* 55.39% 72.76% 75.47% 2.62%
protobuf:
protobuf 4.35.1-release
0.32%* 0.14%* 0.25%* 0.53%* 55.39% 72.76% 75.47% 2.43%
rkyv 0.8.18 100.00% 97.09%* 97.03%* 80.78% 90.18% 90.65% 18.04%
ron 0.12.2 0.09% 0.03% 21.84% 54.07% 59.56% 1.18%
savefile 0.20.5 98.75% 99.38% 80.78% 90.17% 90.65% 18.11%
scale:
parity-scale-codec 3.7.5
2.86% 4.01% 80.78% 90.18% 90.65% 17.93%
serde-brief 0.2.0 1.11% 0.48% 30.77% 60.44% 71.14% 1.96%
serde-zap 0.1.0 33.91% 12.81% 80.78% 90.18% 90.65% 17.77%
serde_bare 0.5.0 2.61% 3.78% 80.78% 90.18% 90.65% 18.29%
speedy 0.8.7 98.95% 99.27% 80.78% 90.18% 90.65% 17.95%
wincode 0.6.0 94.23% 100.00% 80.78% 90.18% 90.65% 18.31%
wiring 0.2.4 96.82% 51.31% 80.78% 90.17% 90.65% 18.23%

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
1.19%* 0.30%* 1.96%*
columnar 0.13.1 15.16%
flatbuffers 25.12.19 49.99%* 2.63%* 93.06%* 76.68%*
nibblecode 0.1.0 100.00%* 88.82%* 99.99%* 100.00%* 100.00%*
rkyv 0.8.18 99.74%* 26.59%* 99.99%* 99.99%* 96.04%*

minecraft_savedata

This data set is composed of Minecraft player saves that contain highly structured data.

Raw data

For operations, time per iteration; for size, bytes. Lower is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Borrow Size Zlib Zstd Zstd Time
bilrost 0.1015.0 676.01 µs* 598.28 µs* 2.3828 ms 1.2509 ms 489348 281173 249360 1.8943 ms
bin-proto 0.12.8 1.4933 ms 2.3272 ms 566975 239350 231475 1.8283 ms
bincode 2.0.1 266.10 µs 1.4951 ms 632.53 µs 367413 221291 206242 1.6399 ms
bincode 1.3.3 518.86 µs 1.5229 ms 721.15 µs 569975 240525 231884 1.8242 ms
bitcode 0.6.9 81.495 µs 1.0356 ms 117.10 µs 327688 200947 182040 625.33 µs
borsh 1.8.0 485.09 µs 1.4610 ms 446595 234236 209834 1.4723 ms
capnp:
capnp 0.27.0
384.84 µs 861.80 µs* 803896 489017* 335606 293127* 280744 271528* 2.7347 ms 1.8314 ms*
cbor:
cbor4ii 1.2.2
556.10 µs 3.6472 ms 2.6031 ms 1109831 344745 274333 2.5374 ms
cbor:
ciborium 0.2.2
3.0909 ms 8.9111 ms 1109821 344751 274345 2.6096 ms
cbor:
serde_cbor 0.11.2
1.5775 ms 3.5958 ms 2.5637 ms 1109821 344751 274345 2.5211 ms
columnar 0.13.1 163.11 µs 1.5795 ms 542.15 µs* 563392 249619 217632 1.3196 ms
compactly 0.1.7 7.5349 ms 5.5797 ms 148461 148599 148473 72.269 µs
databuf 0.5.0 193.62 µs 1.4525 ms 645.65 µs 356311 213062 198403 1.3846 ms
dlhn 0.1.7 594.36 µs 2.1800 ms 366496 220600 205586 1.4832 ms
flatbuffers 25.12.19 2.8613 ms 849472 347816 294871 2.5624 ms
flexbuffers 25.12.19 6.3628 ms 5.9023 ms 4.9463 ms 1187688 557642 553730 4.4544 ms
json:
flexon 0.4.8
2.0938 ms 3.6384 ms 1623191 466527 359157 4.4458 ms
json:
serde_json 1.0.151
3.0078 ms 5.6338 ms 1623191 466527 359157 4.4137 ms
json:
simd-json 0.17.3
2.2134 ms 3.7006 ms 1623191 466527 359157 4.3497 ms
messagepack:
msgpacker 0.7.1
201.52 µs 2.3408 ms 1.1249 ms 391251 236877 220395 1.5811 ms
messagepack:
rmp-serde 1.3.1
1.2210 ms 2.4069 ms 1.3331 ms 424533 245214 226077 1.6446 ms
messagepack:
zerompk 0.7.1
205.19 µs 1.7891 ms 791.83 µs 416025 243812 224965 1.6118 ms
minicbor 2.3.0 481.13 µs 2.6767 ms 1.4818 ms 428773 249857 228630 1.6621 ms
nachricht-serde 0.4.0 4.0608 ms 3.1949 ms 2.2484 ms 449745 252432 230965 1.7484 ms
nanoserde 0.2.1 166.62 µs 1.5524 ms 567975 239930 231872 1.8352 ms
nibblecode 0.1.0 122.49 µs 603928 427098 405603 2.5076 ms
postcard 1.1.3 370.77 µs 1.7305 ms 706.70 µs 367489 221913 207244 1.4019 ms
pot 3.0.1 1.7814 ms 4.7134 ms 3.8046 ms 599125 299158 247675 1.9516 ms
protobuf:
buffa 0.9.1
741.11 µs* 2.2597 ms* 2.7473 ms* 2.9167 ms* 2.2743 ms 596811 305319 268737 2.1977 ms
protobuf:
prost 0.14.4
973.95 µs* 2.4103 ms* 2.8148 ms* 2.8925 ms* 596811 305319 268737 2.2484 ms
protobuf:
protobuf 3.7.2
936.16 µs* 2.5518 ms* 2.9693 ms* 3.1982 ms* 596811 305319 268737 2.1425 ms
protobuf:
protobuf 4.35.1-release
1.4292 ms* 5.6267 ms* 5.4947 ms* 2.3927 ms* 596811 305319 268737 2.1467 ms
rkyv 0.8.18 214.92 µs 1.2562 ms* 1.5649 ms* 603776 254776 219421 1.7003 ms
ron 0.12.2 6.5077 ms 22.528 ms 21.470 ms 1465223 434935 342907 4.1850 ms
savefile 0.20.5 142.21 µs 1.5940 ms 566991 239362 231478 1.7745 ms
scale:
parity-scale-codec 3.7.5
543.02 µs 1.7211 ms 356311 212976 198423 1.4089 ms
serde-brief 0.2.0 951.88 µs 4.3446 ms 2.9191 ms 1276014 373898 293384 2.8504 ms
serde-zap 0.1.0 134.10 µs 1.6279 ms 585.06 µs 367413 221291 206242 1.4348 ms
serde_bare 0.5.0 630.89 µs 1.9085 ms 356311 213062 198403 1.4082 ms
speedy 0.8.7 165.88 µs 1.3890 ms 451.93 µs 449595 234970 210192 1.4785 ms
wincode 0.6.0 140.23 µs 1.3652 ms 456.71 µs 566975 239350 231475 1.8026 ms
wiring 0.2.4 126.66 µs 1.5737 ms 566975 247810 225086 1.8992 ms

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
63.167 ns* 481.34 µs* 494.25 ns*
columnar 0.13.1 513.39 ns
flatbuffers 25.12.19 2.1820 ns* 2.0070 ms* 1.1987 µs* 1.9612 ms*
nibblecode 0.1.0 1.0912 ns* 95.786 µs* 136.92 ns* 98.585 µs* 603.39 ns*
rkyv 0.8.18 1.0910 ns* 240.01 µs* 136.92 ns* 237.11 µs* 603.78 ns*

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Borrow Size Zlib Zstd Zstd Time
bilrost 0.1015.0 12.06%* 13.62%* 22.75% 9.36% 30.34% 52.85% 59.54% 3.82%
bin-proto 0.12.8 5.46% 23.30% 26.18% 62.08% 64.14% 3.95%
bincode 2.0.1 30.63% 36.26% 18.51% 40.41% 67.15% 71.99% 4.41%
bincode 1.3.3 15.71% 35.60% 16.24% 26.05% 61.78% 64.03% 3.96%
bitcode 0.6.9 100.00% 52.35% 100.00% 45.31% 73.95% 81.56% 11.56%
borsh 1.8.0 16.80% 37.11% 33.24% 63.44% 70.76% 4.91%
capnp:
capnp 0.27.0
21.18% 9.46%* 18.47% 30.36%* 44.28% 50.69%* 52.89% 54.68%* 2.64% 3.95%*
cbor:
cbor4ii 1.2.2
14.65% 14.86% 4.50% 13.38% 43.10% 54.12% 2.85%
cbor:
ciborium 0.2.2
2.64% 6.08% 13.38% 43.10% 54.12% 2.77%
cbor:
serde_cbor 0.11.2
5.17% 15.08% 4.57% 13.38% 43.10% 54.12% 2.87%
columnar 0.13.1 49.96% 34.32% 100.00%* 26.35% 59.53% 68.22% 5.48%
compactly 0.1.7 1.08% 9.72% 100.00% 100.00% 100.00% 100.00%
databuf 0.5.0 42.09% 37.33% 18.14% 41.67% 69.74% 74.83% 5.22%
dlhn 0.1.7 13.71% 24.87% 40.51% 67.36% 72.22% 4.87%
flatbuffers 25.12.19 2.85% 17.48% 42.72% 50.35% 2.82%
flexbuffers 25.12.19 1.28% 9.19% 2.37% 12.50% 26.65% 26.81% 1.62%
json:
flexon 0.4.8
3.89% 14.90% 9.15% 31.85% 41.34% 1.63%
json:
serde_json 1.0.151
2.71% 9.62% 9.15% 31.85% 41.34% 1.64%
json:
simd-json 0.17.3
3.68% 14.65% 9.15% 31.85% 41.34% 1.66%
messagepack:
msgpacker 0.7.1
40.44% 23.16% 10.41% 37.95% 62.73% 67.37% 4.57%
messagepack:
rmp-serde 1.3.1
6.67% 22.52% 8.78% 34.97% 60.60% 65.67% 4.39%
messagepack:
zerompk 0.7.1
39.72% 30.30% 14.79% 35.69% 60.95% 66.00% 4.48%
minicbor 2.3.0 16.94% 20.25% 7.90% 34.62% 59.47% 64.94% 4.35%
nachricht-serde 0.4.0 2.01% 16.97% 5.21% 33.01% 58.87% 64.28% 4.13%
nanoserde 0.2.1 48.91% 34.92% 26.14% 61.93% 64.03% 3.94%
nibblecode 0.1.0 66.53% 24.58% 34.79% 36.61% 2.88%
postcard 1.1.3 21.98% 31.33% 16.57% 40.40% 66.96% 71.64% 5.16%
pot 3.0.1 4.57% 11.50% 3.08% 24.78% 49.67% 59.95% 3.70%
protobuf:
buffa 0.9.1
11.00%* 3.61%* 19.73%* 18.59%* 5.15% 24.88% 48.67% 55.25% 3.29%
protobuf:
prost 0.14.4
8.37%* 3.38%* 19.26%* 18.74%* 24.88% 48.67% 55.25% 3.21%
protobuf:
protobuf 3.7.2
8.71%* 3.19%* 18.26%* 16.95%* 24.88% 48.67% 55.25% 3.37%
protobuf:
protobuf 4.35.1-release
5.70%* 1.45%* 9.87%* 22.66%* 24.88% 48.67% 55.25% 3.37%
rkyv 0.8.18 37.92% 43.16%* 34.64%* 24.59% 58.33% 67.67% 4.25%
ron 0.12.2 1.25% 2.41% 0.55% 10.13% 34.17% 43.30% 1.73%
savefile 0.20.5 57.31% 34.01% 26.18% 62.08% 64.14% 4.07%
scale:
parity-scale-codec 3.7.5
15.01% 31.50% 41.67% 69.77% 74.83% 5.13%
serde-brief 0.2.0 8.56% 12.48% 4.01% 11.63% 39.74% 50.61% 2.54%
serde-zap 0.1.0 60.77% 33.30% 20.02% 40.41% 67.15% 71.99% 5.04%
serde_bare 0.5.0 12.92% 28.41% 41.67% 69.74% 74.83% 5.13%
speedy 0.8.7 49.13% 39.03% 25.91% 33.02% 63.24% 70.64% 4.89%
wincode 0.6.0 58.12% 39.71% 25.64% 26.18% 62.08% 64.14% 4.01%
wiring 0.2.4 64.34% 34.45% 26.18% 59.96% 65.96% 3.81%

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
1.73%* 0.03%* 27.70%*
columnar 0.13.1 0.21%
flatbuffers 25.12.19 50.00%* 0.00%* 11.42%* 0.01%*
nibblecode 0.1.0 99.98%* 0.00%* 100.00%* 0.14%* 100.00%*
rkyv 0.8.18 100.00%* 0.00%* 100.00%* 0.06%* 99.94%*

mk48

This data set is composed of mk48.io game updates that contain data with many exploitable patterns and invariants.

Raw data

For operations, time per iteration; for size, bytes. Lower is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd Zstd Time
bilrost 0.1015.0 3.7217 ms* 1.9583 ms* 6.6405 ms 1704643 1294259 1245668 8.1568 ms
bin-proto 0.12.8 4.4057 ms 5.4446 ms 1791489 1127998 1051146 7.3094 ms
bincode 2.0.1 909.53 µs 3.3589 ms 1406257 1117802 1062438 6.4638 ms
bincode 1.3.3 3.0615 ms 3.5351 ms 1854234 1141994 1048745 7.3027 ms
bitcode 0.6.9 550.45 µs 1.9644 ms 971318 878034 850340 2.1479 ms
borsh 1.8.0 2.6166 ms 2.2795 ms 1521989 1108471 1038528 6.9390 ms
capnp:
capnp 0.27.0
2.1510 ms 3.7320 ms* 2724288 1616255* 1546992 1278764* 1239111 1125654* 10.659 ms 6.0023 ms*
cbor:
cbor4ii 1.2.2
1.9719 ms 14.444 ms 6012539 1695215 1464951 16.456 ms
cbor:
ciborium 0.2.2
20.054 ms 47.278 ms 6012373 1695146 1465025 16.361 ms
cbor:
serde_cbor 0.11.2
8.5231 ms 15.374 ms 6012373 1695146 1465025 16.581 ms
columnar 0.13.1 688.72 µs 3.0476 ms 1.0212 ms* 1544720 996718 896213 3.5401 ms
compactly 0.1.7 44.575 ms 28.136 ms 800772 801349 800799 271.95 µs
databuf 0.5.0 805.64 µs 3.0341 ms 1319999 1062631 1008334 6.1973 ms
dlhn 0.1.7 3.7458 ms 6.0108 ms 1311281 1077520 1046095 5.9263 ms
flatbuffers 25.12.19 3.9637 ms 2325620 1439185 1268060 9.7087 ms
flexbuffers 25.12.19 31.759 ms 29.658 ms 5352680 2658295 2777967 24.766 ms
json:
flexon 0.4.8
11.552 ms 18.556 ms 9390461 2391679 1842767 27.493 ms
json:
serde_json 1.0.151
16.353 ms 25.540 ms 9390461 2391679 1842767 27.394 ms
json:
simd-json 0.17.3
10.229 ms 20.774 ms 9390461 2391679 1842767 27.510 ms
messagepack:
msgpacker 0.7.1
811.57 µs 4.6981 ms 1458773 1156055 1137788 6.6282 ms
messagepack:
rmp-serde 1.3.1
8.3590 ms 8.7441 ms 1745322 1261627 1228923 7.9754 ms
messagepack:
zerompk 0.7.1
869.49 µs 3.7850 ms 1675866 1230968 1195006 7.6057 ms
minicbor 2.3.0 1.9499 ms 8.8570 ms 1777386 1276218 1252558 8.5622 ms
nachricht-serde 0.4.0 23.843 ms 13.590 ms 1770060 1277755 1263362 8.6609 ms
nanoserde 0.2.1 712.14 µs 2.2363 ms 1812404 1134820 1053109 7.4424 ms
nibblecode 0.1.0 425.93 µs 2075936 1516641 1403868 9.7648 ms
postcard 1.1.3 1.5811 ms 3.7908 ms 1311281 1083900 1041434 5.9545 ms
pot 3.0.1 10.959 ms 22.545 ms 2604812 1482233 1298928 11.560 ms
protobuf:
buffa 0.9.1
2.8016 ms* 6.5949 ms* 8.5627 ms* 9.5716 ms* 1859886 1338076 1295351 8.7064 ms
protobuf:
prost 0.14.4
4.5636 ms* 7.6909 ms* 6.9017 ms* 7.5766 ms* 1859886 1338076 1295351 8.7257 ms
protobuf:
protobuf 3.7.2
4.0959 ms* 9.9397 ms* 9.8542 ms* 10.655 ms* 1859886 1338076 1295351 8.7516 ms
protobuf:
protobuf 4.35.1-release
6.9465 ms* 25.875 ms* 20.234 ms* 8.9905 ms* 1859886 1338076 1295351 8.7220 ms
rkyv 0.8.18 831.53 µs 1.8255 ms* 2.2285 ms* 2075936 1383779 1210377 9.4855 ms
ron 0.12.2 34.905 ms 145.40 ms 8677703 2233642 1826180 27.413 ms
savefile 0.20.5 571.17 µs 2.3749 ms 1791505 1128012 1051153 7.3004 ms
scale:
parity-scale-codec 3.7.5
2.7084 ms 2.8923 ms 1319999 1064380 1010708 6.1302 ms
serde-brief 0.2.0 3.4353 ms 19.943 ms 6951772 1796265 1567819 18.520 ms
serde-zap 0.1.0 596.91 µs 3.5948 ms 1406257 1117802 1062438 6.4944 ms
serde_bare 0.5.0 3.4053 ms 4.0783 ms 1319999 1062645 1008349 6.2337 ms
speedy 0.8.7 593.80 µs 2.0810 ms 1584734 1119837 1037992 7.1525 ms
wincode 0.6.0 524.12 µs 1.9175 ms 1791489 1127998 1051146 7.3631 ms
wiring 0.2.4 478.17 µs 2.3178 ms 1791489 1156963 1082815 7.5787 ms

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
66.592 ns* 1.6845 ms* 390.06 ns*
columnar 0.13.1 26.497 ns
flatbuffers 25.12.19 2.1816 ns* 5.1995 ms* 2.3356 µs* 5.3594 ms*
nibblecode 0.1.0 1.0910 ns* 312.02 µs* 295.15 ns* 309.00 µs* 481.03 ns*
rkyv 0.8.18 1.0910 ns* 374.47 µs* 295.35 ns* 374.68 µs* 552.39 ns*

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd Zstd Time
bilrost 0.1015.0 11.44%* 21.75%* 15.38% 46.98% 61.92% 64.29% 3.33%
bin-proto 0.12.8 9.67% 18.76% 44.70% 71.04% 76.18% 3.72%
bincode 2.0.1 46.83% 30.40% 56.94% 71.69% 75.37% 4.21%
bincode 1.3.3 13.91% 28.89% 43.19% 70.17% 76.36% 3.72%
bitcode 0.6.9 77.38% 51.99% 82.44% 91.27% 94.17% 12.66%
borsh 1.8.0 16.28% 44.80% 52.61% 72.29% 77.11% 3.92%
capnp:
capnp 0.27.0
19.80% 11.41%* 29.39% 49.54%* 51.80% 62.67%* 64.63% 71.14%* 2.55% 4.53%*
cbor:
cbor4ii 1.2.2
21.60% 7.07% 13.32% 47.27% 54.66% 1.65%
cbor:
ciborium 0.2.2
2.12% 2.16% 13.32% 47.27% 54.66% 1.66%
cbor:
serde_cbor 0.11.2
5.00% 6.64% 13.32% 47.27% 54.66% 1.64%
columnar 0.13.1 61.84% 33.51% 100.00%* 51.84% 80.40% 89.35% 7.68%
compactly 0.1.7 0.96% 3.63% 100.00% 100.00% 100.00% 100.00%
databuf 0.5.0 52.87% 33.66% 60.66% 75.41% 79.42% 4.39%
dlhn 0.1.7 11.37% 16.99% 61.07% 74.37% 76.55% 4.59%
flatbuffers 25.12.19 10.75% 34.43% 55.68% 63.15% 2.80%
flexbuffers 25.12.19 1.34% 3.44% 14.96% 30.15% 28.83% 1.10%
json:
flexon 0.4.8
3.69% 5.50% 8.53% 33.51% 43.46% 0.99%
json:
serde_json 1.0.151
2.60% 4.00% 8.53% 33.51% 43.46% 0.99%
json:
simd-json 0.17.3
4.16% 4.92% 8.53% 33.51% 43.46% 0.99%
messagepack:
msgpacker 0.7.1
52.48% 21.74% 54.89% 69.32% 70.38% 4.10%
messagepack:
rmp-serde 1.3.1
5.10% 11.68% 45.88% 63.52% 65.16% 3.41%
messagepack:
zerompk 0.7.1
48.99% 26.98% 47.78% 65.10% 67.01% 3.58%
minicbor 2.3.0 21.84% 11.53% 45.05% 62.79% 63.93% 3.18%
nachricht-serde 0.4.0 1.79% 7.51% 45.24% 62.72% 63.39% 3.14%
nanoserde 0.2.1 59.81% 45.66% 44.18% 70.61% 76.04% 3.65%
nibblecode 0.1.0 100.00% 38.57% 52.84% 57.04% 2.78%
postcard 1.1.3 26.94% 26.94% 61.07% 73.93% 76.89% 4.57%
pot 3.0.1 3.89% 4.53% 30.74% 54.06% 61.65% 2.35%
protobuf:
buffa 0.9.1
15.20%* 6.46%* 11.93%* 10.67%* 43.05% 59.89% 61.82% 3.12%
protobuf:
prost 0.14.4
9.33%* 5.54%* 14.80%* 13.48%* 43.05% 59.89% 61.82% 3.12%
protobuf:
protobuf 3.7.2
10.40%* 4.29%* 10.36%* 9.58%* 43.05% 59.89% 61.82% 3.11%
protobuf:
protobuf 4.35.1-release
6.13%* 1.65%* 5.05%* 11.36%* 43.05% 59.89% 61.82% 3.12%
rkyv 0.8.18 51.22% 55.94%* 45.82%* 38.57% 57.91% 66.16% 2.87%
ron 0.12.2 1.22% 0.70% 9.23% 35.88% 43.85% 0.99%
savefile 0.20.5 74.57% 43.00% 44.70% 71.04% 76.18% 3.73%
scale:
parity-scale-codec 3.7.5
15.73% 35.31% 60.66% 75.29% 79.23% 4.44%
serde-brief 0.2.0 12.40% 5.12% 11.52% 44.61% 51.08% 1.47%
serde-zap 0.1.0 71.36% 28.41% 56.94% 71.69% 75.37% 4.19%
serde_bare 0.5.0 12.51% 25.04% 60.66% 75.41% 79.42% 4.36%
speedy 0.8.7 71.73% 49.07% 50.53% 71.56% 77.15% 3.80%
wincode 0.6.0 81.27% 53.26% 44.70% 71.04% 76.18% 3.69%
wiring 0.2.4 89.08% 44.06% 44.70% 69.26% 73.96% 3.59%

Zero-copy deserialization speed

Crate Access Read Update
capnp:
capnp 0.27.0
1.64%* 0.02%* 75.67%*
columnar 0.13.1 4.12%
flatbuffers 25.12.19 50.01%* 0.00%* 12.64%* 0.01%*
nibblecode 0.1.0 100.00%* 0.00%* 100.00%* 0.10%* 100.00%*
rkyv 0.8.18 100.00%* 0.00%* 99.93%* 0.08%* 87.08%*

Footnotes:

* mouse over for situational details

this deserialization capability is not supported

buffer mutation is not supported (capnp and flatbuffers may but not for rust)

About

Benchmarks for rust serialization frameworks

Resources

Stars

1.0k stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages