The goal of these benchmarks is to provide thorough and complete benchmarks for various rust serialization frameworks.
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
All tests benchmark the following properties (time or size):
- Serialize: serialize data into a buffer
- Deserialize: deserializes a buffer into a normal rust object
- 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. Other footnotes are located at the bottom.
Runtime info
rustc 1.77.0-nightly (11f32b73e 2024-01-31)
binary: rustc
commit-hash: 11f32b73e0dc9287e305b5b9980d24aecdc8c17f
commit-date: 2024-01-31
host: x86_64-unknown-linux-gnu
release: 1.77.0-nightly
LLVM version: 17.0.6
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 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.86
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 tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf 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 invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq 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: 1 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 Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: 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
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
This data set is composed of HTTP request logs that are small and contain many strings.
For operations, time per iteration; for size, bytes. Lower is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 388.30 µs | 1.4553 ms* | 1705800 | 520085 | 413215 | 6.7601 ms |
alkahest 0.1.5 | 194.88 µs | † | 1045784 | 454157 | 389424 | 6.0234 ms |
bilrost 0.1007.0 | 781.46 µs* 729.54 µs* | 3.1793 ms | 874632 | 355446 | 311723 | 5.0678 ms |
bincode 2.0.0-rc | 213.35 µs | 2.5771 ms | 741295 | 303944 | 257153 | 3.9887 ms |
bincode 1.3.3 | 526.02 µs | 2.0283 ms | 1045784 | 373127 | 311761 | 4.8509 ms |
bitcode 0.6.0 | 143.54 µs | 1.4848 ms | 703710 | 288826 | 229755 | 2.4313 ms |
borsh 1.3.1 | 545.68 µs | 2.3023 ms | 885780 | 362204 | 286514 | 4.5376 ms |
bson 2.9.0 | 2.2942 ms | 7.1524 ms | 1924682 | 532821 | 376270 | 5.6447 ms |
capnp 0.18.13 | 560.36 µs | † | 1443216 | 513986 | 428649 | 6.7664 ms |
cbor4ii 0.3.2 | 901.08 µs | 5.0874 ms | 1407835 | 403440 | 324081 | 4.8194 ms |
ciborium 0.2.2 | 3.8650 ms | 10.127 ms | 1407835 | 403440 | 324081 | 4.8079 ms |
databuf 0.5.0 | 276.38 µs | 2.0724 ms | 765778 | 311715 | 264630 | 4.1529 ms |
dlhn 0.1.6 | 801.55 µs | 2.5024 ms | 724953 | 301446 | 253629 | 3.8139 ms |
flatbuffers 23.5.26 | 1.3596 ms | † | 1276368 | 468539 | 388832 | 5.3179 ms |
msgpacker 0.4.3 | 1.1249 ms | 2.5537 ms | 764996 | 315291 | 264898 | 3.9499 ms |
nachricht-serde 0.4.0 | 5.6261 ms | 4.1247 ms | 818669 | 332556 | 285514 | 4.4076 ms |
nanoserde 0.1.37 | 258.42 µs | 2.0675 ms | 1045784 | 373127 | 311761 | 4.5508 ms |
parity-scale-codec 3.6.9 | 701.41 µs | 2.1929 ms | 765778 | 311743 | 264518 | 4.1486 ms |
postcard 1.0.8 | 418.01 µs | 2.2391 ms | 724953 | 302399 | 253747 | 3.8084 ms |
pot 3.0.0 | 2.3888 ms | 6.5241 ms | 971922 | 372513 | 304122 | 4.6931 ms |
prost 0.12.4 | 997.10 µs* 2.5247 ms* | 3.3365 ms | 884628 | 363130 | 315494 | 5.1536 ms |
rkyv 0.7.44 | 218.24 µs | 1.4689 ms* 2.0033 ms* | 1011488 | 383862 | 333545 | 5.2316 ms |
rmp-serde 1.1.2 | 1.3028 ms | 3.4644 ms | 784997 | 325384 | 278219 | 4.2048 ms |
ron 0.8.1 | 14.280 ms | 17.159 ms | 1607459 | 449158 | 349713 | 6.0514 ms |
savefile 0.16.5 | 205.04 µs | 2.1047 ms | 1045800 | 373139 | 311755 | 4.7661 ms |
serde_bare 0.5.0 | 674.00 µs | 2.1207 ms | 765778 | 311715 | 264630 | 3.9158 ms |
serde_cbor 0.11.2 | 2.0219 ms | 5.1234 ms | 1407835 | 403440 | 324081 | 4.8201 ms |
serde_json 1.0.115 | 3.7372 ms | 5.8615 ms | 1827461 | 470560 | 361090 | 5.6102 ms |
simd-json 0.13.9 | 2.1384 ms | 4.6856 ms | 1827461 | 470560 | 361090 | 5.6261 ms |
speedy 0.8.7 | 197.07 µs | 1.7735 ms | 885780 | 362204 | 286514 | 4.2123 ms |
wiring 0.2.1 | 194.15 µs | 1.9633 ms | 1045784 | 337930 | 276188 | 3.9432 ms |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 22.552 µs* | 38.974 µs* | ‡ |
alkahest 0.1.5 | 1.8548 ns* | 24.860 µs* | ‡ |
capnp 0.18.13 | 78.774 ns* | 162.51 µs* | ‡ |
flatbuffers 23.5.26 | 2.4730 ns* 1.8537 ms* | 52.047 µs* 1.9622 ms* | ‡ |
rkyv 0.7.44 | 1.2364 ns* 525.61 µs* | 10.642 µs* 537.43 µs* | 9.6032 µs |
Relative to best. Higher is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 36.97% | 100.00%* | 41.25% | 55.53% | 55.60% | 35.97% |
alkahest 0.1.5 | 73.66% | † | 67.29% | 63.60% | 59.00% | 40.36% |
bilrost 0.1007.0 | 18.37%* 19.68%* | 45.77% | 80.46% | 81.26% | 73.70% | 47.98% |
bincode 2.0.0-rc | 67.28% | 56.47% | 94.93% | 95.03% | 89.35% | 60.95% |
bincode 1.3.3 | 27.29% | 71.75% | 67.29% | 77.41% | 73.70% | 50.12% |
bitcode 0.6.0 | 100.00% | 98.01% | 100.00% | 100.00% | 100.00% | 100.00% |
borsh 1.3.1 | 26.30% | 63.21% | 79.45% | 79.74% | 80.19% | 53.58% |
bson 2.9.0 | 6.26% | 20.35% | 36.56% | 54.21% | 61.06% | 43.07% |
capnp 0.18.13 | 25.62% | † | 48.76% | 56.19% | 53.60% | 35.93% |
cbor4ii 0.3.2 | 15.93% | 28.61% | 49.99% | 71.59% | 70.89% | 50.45% |
ciborium 0.2.2 | 3.71% | 14.37% | 49.99% | 71.59% | 70.89% | 50.57% |
databuf 0.5.0 | 51.94% | 70.22% | 91.89% | 92.66% | 86.82% | 58.54% |
dlhn 0.1.6 | 17.91% | 58.16% | 97.07% | 95.81% | 90.59% | 63.75% |
flatbuffers 23.5.26 | 10.56% | † | 55.13% | 61.64% | 59.09% | 45.72% |
msgpacker 0.4.3 | 12.76% | 56.99% | 91.99% | 91.61% | 86.73% | 61.55% |
nachricht-serde 0.4.0 | 2.55% | 35.28% | 85.96% | 86.85% | 80.47% | 55.16% |
nanoserde 0.1.37 | 55.55% | 70.39% | 67.29% | 77.41% | 73.70% | 53.43% |
parity-scale-codec 3.6.9 | 20.46% | 66.36% | 91.89% | 92.65% | 86.86% | 58.61% |
postcard 1.0.8 | 34.34% | 64.99% | 97.07% | 95.51% | 90.54% | 63.84% |
pot 3.0.0 | 6.01% | 22.31% | 72.40% | 77.53% | 75.55% | 51.81% |
prost 0.12.4 | 14.40%* 5.69%* | 43.62% | 79.55% | 79.54% | 72.82% | 47.18% |
rkyv 0.7.44 | 65.77% | 99.07%* 72.65%* | 69.57% | 75.24% | 68.88% | 46.47% |
rmp-serde 1.1.2 | 11.02% | 42.01% | 89.64% | 88.76% | 82.58% | 57.82% |
ron 0.8.1 | 1.01% | 8.48% | 43.78% | 64.30% | 65.70% | 40.18% |
savefile 0.16.5 | 70.01% | 69.15% | 67.29% | 77.40% | 73.70% | 51.01% |
serde_bare 0.5.0 | 21.30% | 68.62% | 91.89% | 92.66% | 86.82% | 62.09% |
serde_cbor 0.11.2 | 7.10% | 28.40% | 49.99% | 71.59% | 70.89% | 50.44% |
serde_json 1.0.115 | 3.84% | 24.83% | 38.51% | 61.38% | 63.63% | 43.34% |
simd-json 0.13.9 | 6.71% | 31.06% | 38.51% | 61.38% | 63.63% | 43.21% |
speedy 0.8.7 | 72.84% | 82.06% | 79.45% | 79.74% | 80.19% | 57.72% |
wiring 0.2.1 | 73.93% | 74.13% | 67.29% | 85.47% | 83.19% | 61.66% |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 0.01%* | 27.31%* | ‡ |
alkahest 0.1.5 | 66.66%* | 42.81%* | ‡ |
capnp 0.18.13 | 1.57%* | 6.55%* | ‡ |
flatbuffers 23.5.26 | 50.00%* 0.00%* | 20.45%* 0.54%* | ‡ |
rkyv 0.7.44 | 100.00%* 0.00%* | 100.00%* 1.98%* | 100.00% |
This data set is a single mesh. The mesh contains an array of triangles, each of which has three vertices and a normal vector.
For operations, time per iteration; for size, bytes. Lower is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 237.31 µs | 238.69 µs* | 6000024 | 5378514 | 5345891 | 7.5669 ms |
alkahest 0.1.5 | 148.76 µs | † | 6000008 | 5378500 | 5345890 | 7.5519 ms |
bilrost 0.1007.0 | 6.6664 ms* 8.4840 ms* | 10.811 ms | 8625005 | 6443961 | 6231572 | 70.842 ms |
bincode 2.0.0-rc | 423.57 µs | 826.88 µs | 6000005 | 5378497 | 5345897 | 7.5272 ms |
bincode 1.3.3 | 5.1204 ms | 4.9154 ms | 6000008 | 5378500 | 5345890 | 7.4247 ms |
bitcode 0.6.0 | 1.4281 ms | 595.24 µs | 6000006 | 5182295 | 4923880 | 12.597 ms |
borsh 1.3.1 | 6.1719 ms | 4.2969 ms | 6000004 | 5378496 | 5345889 | 8.1370 ms |
bson 2.9.0 | 44.747 ms | 79.430 ms | 23013911 | 9212089 | 7497811 | 106.32 ms |
capnp 0.18.13 | 6.1265 ms | † | 14000088 | 7130367 | 6051062 | 80.604 ms |
cbor4ii 0.3.2 | 10.358 ms | 48.051 ms | 13125016 | 7524114 | 6757967 | 89.390 ms |
ciborium 0.2.2 | 68.655 ms | 106.46 ms | 13122324 | 7524660 | 6759658 | 90.317 ms |
databuf 0.5.0 | 2.4039 ms | 5.2776 ms | 6000003 | 5378495 | 5345900 | 8.2054 ms |
dlhn 0.1.6 | 6.3619 ms | 5.9113 ms | 6000003 | 5378495 | 5345900 | 8.1883 ms |
flatbuffers 23.5.26 | 675.16 µs | † | 6000024 | 5378434 | 5345910 | 7.9826 ms |
msgpacker 0.4.3 | 21.295 ms | 8.7475 ms | 7500005 | 6058442 | 6014337 | 10.214 ms |
nachricht-serde 0.4.0 | 122.08 ms | 27.191 ms | 8125037 | 6493484 | 6386940 | 67.833 ms |
nanoserde 0.1.37 | 1.6680 ms | 898.59 µs | 6000008 | 5378500 | 5345890 | 7.9059 ms |
parity-scale-codec 3.6.9 | 4.8730 ms | 3.9882 ms | 6000004 | 5378496 | 5345889 | 7.7785 ms |
postcard 1.0.8 | 509.57 µs | 1.5993 ms | 6000003 | 5378495 | 5345900 | 8.0403 ms |
pot 3.0.0 | 39.371 ms | 72.888 ms | 10122342 | 6814618 | 6852251 | 81.124 ms |
prost 0.12.4 | 8.0556 ms* 9.4856 ms* | 13.894 ms | 8750000 | 6665735 | 6421871 | 70.896 ms |
rkyv 0.7.44 | 188.53 µs | 199.81 µs* 198.23 µs* | 6000008 | 5378500 | 5345892 | 7.8378 ms |
rmp-serde 1.1.2 | 13.957 ms | 19.252 ms | 8125006 | 6494876 | 6391037 | 106.80 ms |
ron 0.8.1 | 172.32 ms | 260.47 ms | 22192885 | 8970395 | 8138755 | 148.14 ms |
savefile 0.16.5 | 238.76 µs | 237.40 µs | 6000024 | 5378518 | 5345893 | 8.8119 ms |
serde_bare 0.5.0 | 6.3359 ms | 4.1928 ms | 6000003 | 5378495 | 5345900 | 7.9721 ms |
serde_cbor 0.11.2 | 35.183 ms | 44.959 ms | 13122324 | 7524660 | 6759658 | 90.122 ms |
serde_json 1.0.115 | 89.807 ms | 89.601 ms | 26192883 | 9566084 | 8586741 | 155.22 ms |
simd-json 0.13.9 | 54.047 ms | 74.398 ms | 26192883 | 9566084 | 8586741 | 153.13 ms |
speedy 0.8.7 | 239.54 µs | 237.56 µs | 6000004 | 5378496 | 5345889 | 7.7605 ms |
wiring 0.2.1 | 198.49 µs | 318.18 µs | 6000008 | 5378952 | 5345894 | 7.9539 ms |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 2.1640 ns* | 141.69 µs* | ‡ |
alkahest 0.1.5 | 1.8622 ns* | 77.321 µs* | ‡ |
capnp 0.18.13 | 111.15 ns* | 2.1426 ms* | ‡ |
flatbuffers 23.5.26 | 2.4738 ns* 37.432 ns* | 54.120 µs* 77.381 µs* | ‡ |
rkyv 0.7.44 | 1.2367 ns* 10.533 ns* | 46.024 µs* 77.398 µs* | 105.56 µs |
Relative to best. Higher is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 62.69% | 83.05%* | 100.00% | 96.35% | 92.11% | 98.12% |
alkahest 0.1.5 | 100.00% | † | 100.00% | 96.35% | 92.11% | 98.32% |
bilrost 0.1007.0 | 2.23%* 1.75%* | 1.83% | 69.57% | 80.42% | 79.02% | 10.48% |
bincode 2.0.0-rc | 35.12% | 23.97% | 100.00% | 96.35% | 92.11% | 98.64% |
bincode 1.3.3 | 2.91% | 4.03% | 100.00% | 96.35% | 92.11% | 100.00% |
bitcode 0.6.0 | 10.42% | 33.30% | 100.00% | 100.00% | 100.00% | 58.94% |
borsh 1.3.1 | 2.41% | 4.61% | 100.00% | 96.35% | 92.11% | 91.25% |
bson 2.9.0 | 0.33% | 0.25% | 26.07% | 56.26% | 65.67% | 6.98% |
capnp 0.18.13 | 2.43% | † | 42.86% | 72.68% | 81.37% | 9.21% |
cbor4ii 0.3.2 | 1.44% | 0.41% | 45.71% | 68.88% | 72.86% | 8.31% |
ciborium 0.2.2 | 0.22% | 0.19% | 45.72% | 68.87% | 72.84% | 8.22% |
databuf 0.5.0 | 6.19% | 3.76% | 100.00% | 96.35% | 92.11% | 90.49% |
dlhn 0.1.6 | 2.34% | 3.35% | 100.00% | 96.35% | 92.11% | 90.67% |
flatbuffers 23.5.26 | 22.03% | † | 100.00% | 96.35% | 92.11% | 93.01% |
msgpacker 0.4.3 | 0.70% | 2.27% | 80.00% | 85.54% | 81.87% | 72.69% |
nachricht-serde 0.4.0 | 0.12% | 0.73% | 73.85% | 79.81% | 77.09% | 10.95% |
nanoserde 0.1.37 | 8.92% | 22.06% | 100.00% | 96.35% | 92.11% | 93.91% |
parity-scale-codec 3.6.9 | 3.05% | 4.97% | 100.00% | 96.35% | 92.11% | 95.45% |
postcard 1.0.8 | 29.19% | 12.39% | 100.00% | 96.35% | 92.11% | 92.34% |
pot 3.0.0 | 0.38% | 0.27% | 59.27% | 76.05% | 71.86% | 9.15% |
prost 0.12.4 | 1.85%* 1.57%* | 1.43% | 68.57% | 77.75% | 76.67% | 10.47% |
rkyv 0.7.44 | 78.91% | 99.21%* 100.00%* | 100.00% | 96.35% | 92.11% | 94.73% |
rmp-serde 1.1.2 | 1.07% | 1.03% | 73.85% | 79.79% | 77.04% | 6.95% |
ron 0.8.1 | 0.09% | 0.08% | 27.04% | 57.77% | 60.50% | 5.01% |
savefile 0.16.5 | 62.31% | 83.50% | 100.00% | 96.35% | 92.11% | 84.26% |
serde_bare 0.5.0 | 2.35% | 4.73% | 100.00% | 96.35% | 92.11% | 93.13% |
serde_cbor 0.11.2 | 0.42% | 0.44% | 45.72% | 68.87% | 72.84% | 8.24% |
serde_json 1.0.115 | 0.17% | 0.22% | 22.91% | 54.17% | 57.34% | 4.78% |
simd-json 0.13.9 | 0.28% | 0.27% | 22.91% | 54.17% | 57.34% | 4.85% |
speedy 0.8.7 | 62.10% | 83.44% | 100.00% | 96.35% | 92.11% | 95.67% |
wiring 0.2.1 | 74.95% | 62.30% | 100.00% | 96.34% | 92.11% | 93.35% |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 57.15%* | 32.48%* | ‡ |
alkahest 0.1.5 | 66.41%* | 59.52%* | ‡ |
capnp 0.18.13 | 1.11%* | 2.15%* | ‡ |
flatbuffers 23.5.26 | 49.99%* 3.30%* | 85.04%* 59.48%* | ‡ |
rkyv 0.7.44 | 100.00%* 11.74%* | 100.00%* 59.46%* | 100.00% |
This data set is composed of Minecraft player saves that contain highly structured data.
For operations, time per iteration; for size, bytes. Lower is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 190.30 µs | 1.3067 ms* | 1290592 | 396676 | 340554 | 5.2242 ms |
alkahest 0.1.5 | 217.00 µs | † | 667570 | 325484 | 320452 | 3.9407 ms |
bilrost 0.1007.0 | 919.84 µs* 933.43 µs* | 3.1748 ms | 489348 | 281173 | 249546 | 3.0936 ms |
bincode 2.0.0-rc | 280.25 µs | 2.0781 ms | 367413 | 221291 | 206273 | 2.5093 ms |
bincode 1.3.3 | 568.89 µs | 1.8111 ms | 569975 | 240525 | 232423 | 2.9136 ms |
bitcode 0.6.0 | 127.67 µs | 1.2653 ms | 327688 | 200947 | 182736 | 749.09 µs |
borsh 1.3.1 | 554.66 µs | 1.8282 ms | 446595 | 234236 | 210008 | 2.5189 ms |
bson 2.9.0 | 2.8671 ms | 8.2837 ms | 1619653 | 502185 | 328399 | 4.8488 ms |
capnp 0.18.13 | 455.97 µs | † | 803896 | 335606 | 280851 | 3.9503 ms |
cbor4ii 0.3.2 | 806.83 µs | 4.7936 ms | 1109831 | 344745 | 274514 | 3.8123 ms |
ciborium 0.2.2 | 3.6626 ms | 9.4787 ms | 1109821 | 344751 | 274526 | 3.7917 ms |
databuf 0.5.0 | 320.49 µs | 1.7279 ms | 356311 | 213062 | 198488 | 2.4021 ms |
dlhn 0.1.6 | 782.46 µs | 2.6971 ms | 366496 | 220600 | 205683 | 2.4993 ms |
flatbuffers 23.5.26 | 3.3549 ms | † | 844168 | 345696 | 294015 | 3.8784 ms |
msgpacker 0.4.3 | 859.11 µs | 2.8043 ms | 391251 | 236877 | 220476 | 2.6373 ms |
nachricht-serde 0.4.0 | 5.2047 ms | 3.8967 ms | 449745 | 252432 | 231110 | 2.7897 ms |
nanoserde 0.1.37 | 280.65 µs | 1.8807 ms | 567975 | 239930 | 232419 | 2.9029 ms |
parity-scale-codec 3.6.9 | 674.76 µs | 2.0027 ms | 356311 | 212976 | 198524 | 2.4033 ms |
postcard 1.0.8 | 432.82 µs | 1.9547 ms | 367489 | 221913 | 207344 | 2.4987 ms |
pot 3.0.0 | 2.3221 ms | 6.0368 ms | 599125 | 299158 | 247693 | 3.1763 ms |
prost 0.12.4 | 1.1301 ms* 2.8041 ms* | 3.5518 ms | 596811 | 305319 | 269310 | 3.5273 ms |
rkyv 0.7.44 | 300.29 µs | 1.2559 ms* 1.7662 ms* | 596952 | 253967 | 220706 | 2.6958 ms |
rmp-serde 1.1.2 | 1.3556 ms | 3.0010 ms | 424533 | 245214 | 226188 | 2.7036 ms |
ron 0.8.1 | 8.1539 ms | 17.714 ms | 1465223 | 434935 | 343338 | 5.8713 ms |
savefile 0.16.5 | 223.87 µs | 1.8300 ms | 566991 | 239361 | 232010 | 2.9037 ms |
serde_bare 0.5.0 | 701.43 µs | 2.2270 ms | 356311 | 213062 | 198488 | 2.4095 ms |
serde_cbor 0.11.2 | 1.8118 ms | 4.7233 ms | 1109821 | 344751 | 274526 | 3.8548 ms |
serde_json 1.0.115 | 3.7645 ms | 6.8189 ms | 1623191 | 466527 | 359623 | 6.0339 ms |
simd-json 0.13.9 | 2.2371 ms | 4.5517 ms | 1623191 | 466527 | 359623 | 6.0265 ms |
speedy 0.8.7 | 273.04 µs | 1.6501 ms | 449595 | 234970 | 210361 | 2.5257 ms |
wiring 0.2.1 | 203.15 µs | 1.8283 ms | 566975 | 247810 | 225259 | 2.9431 ms |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 37.083 µs* | 37.931 µs* | ‡ |
alkahest 0.1.5 | 1.8618 ns* | 4.6303 µs* | ‡ |
capnp 0.18.13 | 78.812 ns* | 437.77 ns* | ‡ |
flatbuffers 23.5.26 | 2.4739 ns* 2.1562 ms* | 1.3736 µs* 2.1561 ms* | ‡ |
rkyv 0.7.44 | 1.2368 ns* 498.64 µs* | 163.24 ns* 499.85 µs* | 953.85 ns |
Relative to best. Higher is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 67.09% | 96.11%* | 25.39% | 50.66% | 53.66% | 14.34% |
alkahest 0.1.5 | 58.83% | † | 49.09% | 61.74% | 57.02% | 19.01% |
bilrost 0.1007.0 | 13.88%* 13.68%* | 39.56% | 66.96% | 71.47% | 73.23% | 24.21% |
bincode 2.0.0-rc | 45.56% | 60.44% | 89.19% | 90.81% | 88.59% | 29.85% |
bincode 1.3.3 | 22.44% | 69.34% | 57.49% | 83.55% | 78.62% | 25.71% |
bitcode 0.6.0 | 100.00% | 99.26% | 100.00% | 100.00% | 100.00% | 100.00% |
borsh 1.3.1 | 23.02% | 68.70% | 73.37% | 85.79% | 87.01% | 29.74% |
bson 2.9.0 | 4.45% | 15.16% | 20.23% | 40.01% | 55.64% | 15.45% |
capnp 0.18.13 | 28.00% | † | 40.76% | 59.88% | 65.07% | 18.96% |
cbor4ii 0.3.2 | 15.82% | 26.20% | 29.53% | 58.29% | 66.57% | 19.65% |
ciborium 0.2.2 | 3.49% | 13.25% | 29.53% | 58.29% | 66.56% | 19.76% |
databuf 0.5.0 | 39.84% | 72.68% | 91.97% | 94.31% | 92.06% | 31.18% |
dlhn 0.1.6 | 16.32% | 46.56% | 89.41% | 91.09% | 88.84% | 29.97% |
flatbuffers 23.5.26 | 3.81% | † | 38.82% | 58.13% | 62.15% | 19.31% |
msgpacker 0.4.3 | 14.86% | 44.78% | 83.75% | 84.83% | 82.88% | 28.40% |
nachricht-serde 0.4.0 | 2.45% | 32.23% | 72.86% | 79.60% | 79.07% | 26.85% |
nanoserde 0.1.37 | 45.49% | 66.78% | 57.69% | 83.75% | 78.62% | 25.81% |
parity-scale-codec 3.6.9 | 18.92% | 62.71% | 91.97% | 94.35% | 92.05% | 31.17% |
postcard 1.0.8 | 29.50% | 64.25% | 89.17% | 90.55% | 88.13% | 29.98% |
pot 3.0.0 | 5.50% | 20.80% | 54.69% | 67.17% | 73.78% | 23.58% |
prost 0.12.4 | 11.30%* 4.55%* | 35.36% | 54.91% | 65.82% | 67.85% | 21.24% |
rkyv 0.7.44 | 42.52% | 100.00%* 71.11%* | 54.89% | 79.12% | 82.80% | 27.79% |
rmp-serde 1.1.2 | 9.42% | 41.85% | 77.19% | 81.95% | 80.79% | 27.71% |
ron 0.8.1 | 1.57% | 7.09% | 22.36% | 46.20% | 53.22% | 12.76% |
savefile 0.16.5 | 57.03% | 68.63% | 57.79% | 83.95% | 78.76% | 25.80% |
serde_bare 0.5.0 | 18.20% | 56.39% | 91.97% | 94.31% | 92.06% | 31.09% |
serde_cbor 0.11.2 | 7.05% | 26.59% | 29.53% | 58.29% | 66.56% | 19.43% |
serde_json 1.0.115 | 3.39% | 18.42% | 20.19% | 43.07% | 50.81% | 12.41% |
simd-json 0.13.9 | 5.71% | 27.59% | 20.19% | 43.07% | 50.81% | 12.43% |
speedy 0.8.7 | 46.76% | 76.11% | 72.89% | 85.52% | 86.87% | 29.66% |
wiring 0.2.1 | 62.85% | 68.69% | 57.80% | 81.09% | 81.12% | 25.45% |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 0.00%* | 0.43%* | ‡ |
alkahest 0.1.5 | 66.43%* | 3.53%* | ‡ |
capnp 0.18.13 | 1.57%* | 37.29%* | ‡ |
flatbuffers 23.5.26 | 49.99%* 0.00%* | 11.88%* 0.01%* | ‡ |
rkyv 0.7.44 | 100.00%* 0.00%* | 100.00%* 0.03%* | 100.00% |
This data set is composed of mk48.io game updates that contain data with many exploitable patterns and invariants.
For operations, time per iteration; for size, bytes. Lower is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 494.74 µs | 2.3138 ms* | 2984682 | 1406960 | 1270204 | 14.375 ms |
alkahest 0.1.5 | 736.82 µs | † | 1863391 | 1234113 | 1202345 | 11.492 ms |
bilrost 0.1007.0 | 5.0616 ms* 2.9598 ms* | 8.3336 ms | 1664428 | 1264167 | 1216472 | 11.787 ms |
bincode 2.0.0-rc | 704.51 µs | 3.6795 ms | 1372381 | 1091486 | 1037296 | 9.1873 ms |
bincode 1.3.3 | 3.7819 ms | 4.0190 ms | 1811011 | 1115281 | 1025627 | 9.9232 ms |
bitcode 0.6.0 | 720.61 µs | 2.3067 ms | 948499 | 857321 | 837658 | 3.1392 ms |
borsh 1.3.1 | 2.8414 ms | 2.9373 ms | 1486162 | 1082357 | 1013550 | 9.4999 ms |
bson 2.9.0 | 20.208 ms | 43.719 ms | 10030880 | 2833079 | 1600859 | 27.279 ms |
capnp 0.18.13 | 2.1595 ms | † | 2664040 | 1511895 | 1212087 | 14.081 ms |
cbor4ii 0.3.2 | 4.2969 ms | 17.734 ms | 5878791 | 1655835 | 1431390 | 20.954 ms |
ciborium 0.2.2 | 23.167 ms | 46.753 ms | 5878653 | 1655791 | 1431560 | 21.097 ms |
databuf 0.5.0 | 1.5985 ms | 3.5864 ms | 1288257 | 1037579 | 984337 | 8.5242 ms |
dlhn 0.1.6 | 5.2027 ms | 6.2461 ms | 1279599 | 1052061 | 1021161 | 8.2980 ms |
flatbuffers 23.5.26 | 5.1821 ms | † | 2273740 | 1408408 | 1235566 | 12.952 ms |
msgpacker 0.4.3 | 1.9257 ms | 4.5374 ms | 1424043 | 1128758 | 1110156 | 9.3866 ms |
nachricht-serde 0.4.0 | 30.786 ms | 15.580 ms | 1728519 | 1247642 | 1233323 | 11.711 ms |
nanoserde 0.1.37 | 1.5142 ms | 2.8971 ms | 1770477 | 1108304 | 1029947 | 10.032 ms |
parity-scale-codec 3.6.9 | 3.1573 ms | 2.9936 ms | 1288257 | 1039269 | 986510 | 8.5351 ms |
postcard 1.0.8 | 1.8447 ms | 3.9237 ms | 1279599 | 1058243 | 1016738 | 8.3967 ms |
pot 3.0.0 | 13.440 ms | 30.000 ms | 2544810 | 1447453 | 1268390 | 15.334 ms |
prost 0.12.4 | 5.0090 ms* 9.0471 ms* | 9.6005 ms | 1818378 | 1307777 | 1266311 | 11.576 ms |
rkyv 0.7.44 | 1.2908 ms | 2.1606 ms* 2.7791 ms* | 2029080 | 1335117 | 1158855 | 12.329 ms |
rmp-serde 1.1.2 | 8.5612 ms | 12.153 ms | 1703813 | 1231892 | 1200208 | 11.026 ms |
ron 0.8.1 | 36.780 ms | 99.490 ms | 8476284 | 2181196 | 1783971 | 34.268 ms |
savefile 0.16.5 | 1.0226 ms | 2.6249 ms | 1750226 | 1101682 | 1027827 | 9.9529 ms |
serde_bare 0.5.0 | 4.9549 ms | 4.4516 ms | 1288257 | 1037597 | 984356 | 8.6224 ms |
serde_cbor 0.11.2 | 9.6169 ms | 21.475 ms | 5878653 | 1655791 | 1431560 | 21.123 ms |
serde_json 1.0.115 | 20.185 ms | 31.425 ms | 9175594 | 2334253 | 1800713 | 34.284 ms |
simd-json 0.13.9 | 11.518 ms | 26.311 ms | 9175594 | 2334253 | 1800713 | 34.031 ms |
speedy 0.8.7 | 738.68 µs | 2.5228 ms | 1546963 | 1093532 | 1013443 | 9.9670 ms |
wiring 0.2.1 | 744.35 µs | 2.6951 ms | 1750210 | 1129857 | 1058906 | 10.503 ms |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 66.140 µs* | 67.275 µs* | ‡ |
alkahest 0.1.5 | 1.8551 ns* | 627.85 ns* | ‡ |
capnp 0.18.13 | 79.095 ns* | 712.45 ns* | ‡ |
flatbuffers 23.5.26 | 2.4735 ns* 4.9928 ms* | 2.6522 µs* 4.9798 ms* | ‡ |
rkyv 0.7.44 | 1.2449 ns* 618.32 µs* | 489.37 ns* 619.70 µs* | 505.40 ns |
Relative to best. Higher is better.
Crate | Serialize | Deserialize | Size | Zlib | Zstd | Zstd Time |
---|---|---|---|---|---|---|
abomonation 0.7.3 | 100.00% | 93.38%* | 31.78% | 60.93% | 65.95% | 21.84% |
alkahest 0.1.5 | 67.15% | † | 50.90% | 69.47% | 69.67% | 27.32% |
bilrost 0.1007.0 | 9.77%* 16.72%* | 25.93% | 56.99% | 67.82% | 68.86% | 26.63% |
bincode 2.0.0-rc | 70.22% | 58.72% | 69.11% | 78.55% | 80.75% | 34.17% |
bincode 1.3.3 | 13.08% | 53.76% | 52.37% | 76.87% | 81.67% | 31.63% |
bitcode 0.6.0 | 68.66% | 93.67% | 100.00% | 100.00% | 100.00% | 100.00% |
borsh 1.3.1 | 17.41% | 73.56% | 63.82% | 79.21% | 82.65% | 33.04% |
bson 2.9.0 | 2.45% | 4.94% | 9.46% | 30.26% | 52.33% | 11.51% |
capnp 0.18.13 | 22.91% | † | 35.60% | 56.71% | 69.11% | 22.29% |
cbor4ii 0.3.2 | 11.51% | 12.18% | 16.13% | 51.78% | 58.52% | 14.98% |
ciborium 0.2.2 | 2.14% | 4.62% | 16.13% | 51.78% | 58.51% | 14.88% |
databuf 0.5.0 | 30.95% | 60.24% | 73.63% | 82.63% | 85.10% | 36.83% |
dlhn 0.1.6 | 9.51% | 34.59% | 74.12% | 81.49% | 82.03% | 37.83% |
flatbuffers 23.5.26 | 9.55% | † | 41.72% | 60.87% | 67.80% | 24.24% |
msgpacker 0.4.3 | 25.69% | 47.62% | 66.61% | 75.95% | 75.45% | 33.44% |
nachricht-serde 0.4.0 | 1.61% | 13.87% | 54.87% | 68.72% | 67.92% | 26.81% |
nanoserde 0.1.37 | 32.67% | 74.58% | 53.57% | 77.35% | 81.33% | 31.29% |
parity-scale-codec 3.6.9 | 15.67% | 72.17% | 73.63% | 82.49% | 84.91% | 36.78% |
postcard 1.0.8 | 26.82% | 55.07% | 74.12% | 81.01% | 82.39% | 37.39% |
pot 3.0.0 | 3.68% | 7.20% | 37.27% | 59.23% | 66.04% | 20.47% |
prost 0.12.4 | 9.88%* 5.47%* | 22.51% | 52.16% | 65.56% | 66.15% | 27.12% |
rkyv 0.7.44 | 38.33% | 100.00%* 77.74%* | 46.75% | 64.21% | 72.28% | 25.46% |
rmp-serde 1.1.2 | 5.78% | 17.78% | 55.67% | 69.59% | 69.79% | 28.47% |
ron 0.8.1 | 1.35% | 2.17% | 11.19% | 39.31% | 46.95% | 9.16% |
savefile 0.16.5 | 48.38% | 82.31% | 54.19% | 77.82% | 81.50% | 31.54% |
serde_bare 0.5.0 | 9.98% | 48.54% | 73.63% | 82.63% | 85.10% | 36.41% |
serde_cbor 0.11.2 | 5.14% | 10.06% | 16.13% | 51.78% | 58.51% | 14.86% |
serde_json 1.0.115 | 2.45% | 6.88% | 10.34% | 36.73% | 46.52% | 9.16% |
simd-json 0.13.9 | 4.30% | 8.21% | 10.34% | 36.73% | 46.52% | 9.22% |
speedy 0.8.7 | 66.98% | 85.64% | 61.31% | 78.40% | 82.65% | 31.50% |
wiring 0.2.1 | 66.47% | 80.17% | 54.19% | 75.88% | 79.11% | 29.89% |
Crate | Access | Read | Update |
---|---|---|---|
abomonation 0.7.3 | 0.00%* | 0.73%* | ‡ |
alkahest 0.1.5 | 67.11%* | 77.94%* | ‡ |
capnp 0.18.13 | 1.57%* | 68.69%* | ‡ |
flatbuffers 23.5.26 | 50.33%* 0.00%* | 18.45%* 0.01%* | ‡ |
rkyv 0.7.44 | 100.00%* 0.00%* | 100.00%* 0.08%* | 100.00% |
* mouse over for situational details
† do not provide deserialization capabilities, but the user can write their own
‡ do not support buffer mutation (capnp
and flatbuffers
may but not for rust)