Skip to content

8192K/rust_serialization_benchmark

 
 

Repository files navigation

Rust serialization benchmark

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

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
  • Size: the size of the buffer when serialized
  • Zlib: the size of the buffer after zlib compression

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.

Last updated: 2023-11-5 23:45:31

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 Size Zlib Zstd
abomonation 0.7.3 260.30 µs 2.3287 ms* 1705800 530428 403744
alkahest 0.1.5 239.33 µs 1045784 454157 389424
bincode 1.3.3 611.66 µs 3.0228 ms 1045784 373127 311761
bitcode 0.5.0 539.27 µs 3.3111 ms 703664 317711 273622
borsh 1.1.1 498.18 µs 3.3315 ms 885780 362204 286514
bson 2.6.0 2.5798 ms 9.6547 ms 1924682 532821 376270
capnp 0.18.3 589.74 µs 1443216 513986 428649
cbor4ii 0.3.1 1.2581 ms 6.4234 ms 1407835 403440 324081
ciborium 0.2.1 2.7487 ms 12.081 ms 1407835 403440 324081
databuf 0.5.0 410.22 µs 3.0645 ms 765778 311715 264630
dlhn 0.1.6 825.61 µs 3.5158 ms 724953 301446 253629
flatbuffers 23.5.26 1.7462 ms 1276368 468539 388832
msgpacker 0.4.3 1.5520 ms 3.5557 ms 764996 315291 264898
nachricht-serde 0.4.0 8.5302 ms 5.8462 ms 818669 332556 285514
nanoserde 0.1.35 334.50 µs 2.9938 ms 1045784 373127 311761
parity-scale-codec 3.6.5 616.26 µs 3.2907 ms 765778 311743 264518
postcard 1.0.8 407.03 µs 3.1688 ms 724953 302399 253747
pot 3.0.0 2.7818 ms 7.9580 ms 971922 372513 304122
prost 0.12.1 449.84 µs* 3.1265 ms* 3.9878 ms 764951 268137 227947
rkyv 0.7.42 312.22 µs 2.3555 ms* 3.2806 ms* 1011488 383862 333545
rmp-serde 1.1.2 1.4169 ms 4.5216 ms 784997 325384 278219
ron 0.8.1 16.433 ms 21.407 ms 1607459 449158 349713
savefile 0.16.2 245.55 µs 3.1197 ms 1045800 373139 311755
serde_bare 0.5.0 673.48 µs 3.0918 ms 765778 311715 264630
serde_cbor 0.11.2 1.9627 ms 6.2045 ms 1407835 403440 324081
serde_json 1.0.108 4.3460 ms 7.7952 ms 1827461 470560 361090
simd-json 0.13.4 2.4093 ms 6.8655 ms 1827461 470560 361090
speedy 0.8.6 250.31 µs 2.7216 ms 885780 362204 286514

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 32.734 µs* 57.320 µs*
alkahest 0.1.5 2.4097 ns* 35.300 µs*
capnp 0.18.3 85.777 ns* 191.30 µs*
flatbuffers 23.5.26 2.6924 ns* 2.3031 ms* 69.605 µs* 2.4055 ms*
rkyv 0.7.42 1.2059 ns* 822.26 µs* 17.653 µs* 840.25 µs* 19.713 µs

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd
abomonation 0.7.3 91.94% 100.00%* 41.25% 50.55% 56.46%
alkahest 0.1.5 100.00% 67.29% 59.04% 58.53%
bincode 1.3.3 39.13% 77.04% 67.29% 71.86% 73.12%
bitcode 0.5.0 44.38% 70.33% 100.00% 84.40% 83.31%
borsh 1.1.1 48.04% 69.90% 79.44% 74.03% 79.56%
bson 2.6.0 9.28% 24.12% 36.56% 50.32% 60.58%
capnp 0.18.3 40.58% 48.76% 52.17% 53.18%
cbor4ii 0.3.1 19.02% 36.25% 49.98% 66.46% 70.34%
ciborium 0.2.1 8.71% 19.28% 49.98% 66.46% 70.34%
databuf 0.5.0 58.34% 75.99% 91.89% 86.02% 86.14%
dlhn 0.1.6 28.99% 66.24% 97.06% 88.95% 89.87%
flatbuffers 23.5.26 13.71% 55.13% 57.23% 58.62%
msgpacker 0.4.3 15.42% 65.49% 91.98% 85.04% 86.05%
nachricht-serde 0.4.0 2.81% 39.83% 85.95% 80.63% 79.84%
nanoserde 0.1.35 71.55% 77.78% 67.29% 71.86% 73.12%
parity-scale-codec 3.6.5 38.84% 70.77% 91.89% 86.01% 86.17%
postcard 1.0.8 58.80% 73.49% 97.06% 88.67% 89.83%
pot 3.0.0 8.60% 29.26% 72.40% 71.98% 74.95%
prost 0.12.1 53.20%* 7.65%* 58.40% 91.99% 100.00% 100.00%
rkyv 0.7.42 76.65% 98.86%* 70.98%* 69.57% 69.85% 68.34%
rmp-serde 1.1.2 16.89% 51.50% 89.64% 82.41% 81.93%
ron 0.8.1 1.46% 10.88% 43.77% 59.70% 65.18%
savefile 0.16.2 97.47% 74.64% 67.28% 71.86% 73.12%
serde_bare 0.5.0 35.54% 75.32% 91.89% 86.02% 86.14%
serde_cbor 0.11.2 12.19% 37.53% 49.98% 66.46% 70.34%
serde_json 1.0.108 5.51% 29.87% 38.51% 56.98% 63.13%
simd-json 0.13.4 9.93% 33.92% 38.51% 56.98% 63.13%
speedy 0.8.6 95.61% 85.56% 79.44% 74.03% 79.56%

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 0.00%* 30.80%*
alkahest 0.1.5 50.04%* 50.01%*
capnp 0.18.3 1.41%* 9.23%*
flatbuffers 23.5.26 44.79%* 0.00%* 25.36%* 0.73%*
rkyv 0.7.42 100.00%* 0.00%* 100.00%* 2.10%* 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
abomonation 0.7.3 424.89 µs 424.28 µs* 6000024 5378513 5345890
alkahest 0.1.5 436.36 µs 6000008 5378500 5345890
bincode 1.3.3 3.7774 ms 6.2197 ms 6000008 5378500 5345890
bitcode 0.5.0 4.8602 ms 9.7191 ms 4688054 4688491 4688168
borsh 1.1.1 5.2517 ms 6.3593 ms 6000004 5378496 5345889
bson 2.6.0 52.530 ms 103.07 ms 23013911 9212089 7497811
capnp 0.18.3 8.0638 ms 14000088 7130367 6051062
cbor4ii 0.3.1 16.443 ms 59.566 ms 13125016 7524114 6757967
ciborium 0.2.1 69.334 ms 112.48 ms 13122324 7524660 6759658
databuf 0.5.0 1.9503 ms 7.0366 ms 6000003 5378495 5345900
dlhn 0.1.6 7.2621 ms 9.8146 ms 6000003 5378495 5345900
flatbuffers 23.5.26 992.64 µs 6000024 5378434 5345910
msgpacker 0.4.3 24.536 ms 10.627 ms 7500005 6058442 6014337
nachricht-serde 0.4.0 205.51 ms 34.514 ms 8125037 6493484 6386940
nanoserde 0.1.35 2.2163 ms 1.1843 ms 6000008 5378500 5345890
parity-scale-codec 3.6.5 4.2512 ms 6.0289 ms 6000004 5378496 5345889
postcard 1.0.8 589.03 µs 1.7932 ms 6000003 5378495 5345900
pot 3.0.0 45.845 ms 78.288 ms 10122342 6814618 6852251
prost 0.12.1 10.626 ms* 12.736 ms* 14.749 ms 8750000 6665735 6421871
rkyv 0.7.42 579.70 µs 434.42 µs* 434.47 µs* 6000008 5378500 5345892
rmp-serde 1.1.2 11.899 ms 20.091 ms 8125006 6494876 6391037
ron 0.8.1 216.84 ms 355.63 ms 22192885 8970395 8138755
savefile 0.16.2 424.54 µs 424.74 µs 6000024 5378518 5345893
serde_bare 0.5.0 6.1374 ms 6.0287 ms 6000003 5378495 5345900
serde_cbor 0.11.2 39.069 ms 50.710 ms 13122324 7524660 6759658
serde_json 1.0.108 108.40 ms 85.095 ms 26192883 9566084 8586741
simd-json 0.13.4 70.986 ms 106.61 ms 26192883 9566084 8586741
speedy 0.8.6 424.52 µs 424.92 µs 6000004 5378496 5345889

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 2.0190 ns* 245.97 µs*
alkahest 0.1.5 2.4101 ns* 100.63 µs*
capnp 0.18.3 141.54 ns* 2.7976 ms*
flatbuffers 23.5.26 2.6901 ns* 49.324 ns* 65.221 µs* 100.50 µs*
rkyv 0.7.42 1.6064 ns* 7.8165 ns* 37.201 µs* 37.506 µs* 237.27 µs

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd
abomonation 0.7.3 99.91% 100.00%* 78.13% 87.17% 87.70%
alkahest 0.1.5 97.29% 78.13% 87.17% 87.70%
bincode 1.3.3 11.24% 6.82% 78.13% 87.17% 87.70%
bitcode 0.5.0 8.73% 4.37% 100.00% 100.00% 100.00%
borsh 1.1.1 8.08% 6.67% 78.13% 87.17% 87.70%
bson 2.6.0 0.81% 0.41% 20.37% 50.89% 62.53%
capnp 0.18.3 5.26% 33.49% 65.75% 77.48%
cbor4ii 0.3.1 2.58% 0.71% 35.72% 62.31% 69.37%
ciborium 0.2.1 0.61% 0.38% 35.73% 62.31% 69.36%
databuf 0.5.0 21.77% 6.03% 78.13% 87.17% 87.70%
dlhn 0.1.6 5.85% 4.32% 78.13% 87.17% 87.70%
flatbuffers 23.5.26 42.77% 78.13% 87.17% 87.70%
msgpacker 0.4.3 1.73% 3.99% 62.51% 77.39% 77.95%
nachricht-serde 0.4.0 0.21% 1.23% 57.70% 72.20% 73.40%
nanoserde 0.1.35 19.15% 35.83% 78.13% 87.17% 87.70%
parity-scale-codec 3.6.5 9.99% 7.04% 78.13% 87.17% 87.70%
postcard 1.0.8 72.07% 23.66% 78.13% 87.17% 87.70%
pot 3.0.0 0.93% 0.54% 46.31% 68.80% 68.42%
prost 0.12.1 4.00%* 3.33%* 2.88% 53.58% 70.34% 73.00%
rkyv 0.7.42 73.23% 97.67%* 97.65%* 78.13% 87.17% 87.70%
rmp-serde 1.1.2 3.57% 2.11% 57.70% 72.19% 73.36%
ron 0.8.1 0.20% 0.12% 21.12% 52.27% 57.60%
savefile 0.16.2 100.00% 99.89% 78.13% 87.17% 87.70%
serde_bare 0.5.0 6.92% 7.04% 78.13% 87.17% 87.70%
serde_cbor 0.11.2 1.09% 0.84% 35.73% 62.31% 69.36%
serde_json 1.0.108 0.39% 0.50% 17.90% 49.01% 54.60%
simd-json 0.13.4 0.60% 0.40% 17.90% 49.01% 54.60%
speedy 0.8.6 100.00% 99.85% 78.13% 87.17% 87.70%

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 79.56%* 15.12%*
alkahest 0.1.5 66.65%* 36.97%*
capnp 0.18.3 1.13%* 1.33%*
flatbuffers 23.5.26 59.72%* 3.26%* 57.04%* 37.02%*
rkyv 0.7.42 100.00%* 20.55%* 100.00%* 99.19%* 100.00%

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 Size Zlib Zstd
abomonation 0.7.3 228.35 µs 1.8930 ms* 1290592 394642 331565
alkahest 0.1.5 260.04 µs 667570 325484 320452
bincode 1.3.3 646.63 µs 2.5008 ms 569975 240525 232423
bitcode 0.5.0 371.13 µs 2.6455 ms 322798 214279 201247
borsh 1.1.1 566.77 µs 2.5177 ms 446595 234236 210008
bson 2.6.0 3.6259 ms 11.295 ms 1619653 502185 328399
capnp 0.18.3 597.12 µs 803896 335606 280851
cbor4ii 0.3.1 1.3185 ms 6.3818 ms 1109831 344745 274514
ciborium 0.2.1 3.6629 ms 11.150 ms 1109821 344751 274526
databuf 0.5.0 468.37 µs 2.4031 ms 356311 213062 198488
dlhn 0.1.6 899.43 µs 3.4345 ms 366496 220600 205683
flatbuffers 23.5.26 3.3032 ms 844168 345696 294015
msgpacker 0.4.3 1.2435 ms 3.8844 ms 391251 236877 220476
nachricht-serde 0.4.0 8.1852 ms 5.1700 ms 449745 252432 231110
nanoserde 0.1.35 332.29 µs 2.5975 ms 567975 239930 232419
parity-scale-codec 3.6.5 686.48 µs 2.7559 ms 356311 212976 198524
postcard 1.0.8 478.92 µs 2.6910 ms 367489 221913 207344
pot 3.0.0 2.8120 ms 7.3315 ms 599125 299158 247693
prost 0.12.1 1.3776 ms* 3.9419 ms* 4.6882 ms 596811 305319 269310
rkyv 0.7.42 426.83 µs 1.8029 ms* 2.6746 ms* 596952 253967 220706
rmp-serde 1.1.2 1.6405 ms 3.9731 ms 424533 245214 226188
ron 0.8.1 10.421 ms 21.989 ms 1465223 434935 343338
savefile 0.16.2 278.63 µs 2.4646 ms 566991 239361 232010
serde_bare 0.5.0 817.33 µs 3.1184 ms 356311 213062 198488
serde_cbor 0.11.2 2.1287 ms 6.2878 ms 1109821 344751 274526
serde_json 1.0.108 4.6011 ms 9.6567 ms 1623191 466527 359623
simd-json 0.13.4 2.7741 ms 6.0332 ms 1623191 466527 359623
speedy 0.8.6 334.92 µs 2.2227 ms 449595 234970 210361

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 36.018 µs* 36.629 µs*
alkahest 0.1.5 2.4096 ns* 7.0811 µs*
capnp 0.18.3 85.754 ns* 663.94 ns*
flatbuffers 23.5.26 2.6824 ns* 2.5876 ms* 1.7827 µs* 2.5912 ms*
rkyv 0.7.42 1.2058 ns* 752.90 µs* 145.52 ns* 755.35 µs* 1.7123 µs

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd
abomonation 0.7.3 100.00% 95.24%* 25.01% 53.97% 59.86%
alkahest 0.1.5 87.81% 48.35% 65.43% 61.94%
bincode 1.3.3 35.31% 72.09% 56.63% 88.55% 85.40%
bitcode 0.5.0 61.53% 68.15% 100.00% 99.39% 98.63%
borsh 1.1.1 40.29% 71.61% 72.28% 90.92% 94.51%
bson 2.6.0 6.30% 15.96% 19.93% 42.41% 60.44%
capnp 0.18.3 38.24% 40.15% 63.46% 70.67%
cbor4ii 0.3.1 17.32% 28.25% 29.09% 61.78% 72.31%
ciborium 0.2.1 6.23% 16.17% 29.09% 61.78% 72.30%
databuf 0.5.0 48.75% 75.02% 90.59% 99.96% 100.00%
dlhn 0.1.6 25.39% 52.49% 88.08% 96.54% 96.50%
flatbuffers 23.5.26 6.91% 38.24% 61.61% 67.51%
msgpacker 0.4.3 18.36% 46.41% 82.50% 89.91% 90.03%
nachricht-serde 0.4.0 2.79% 34.87% 71.77% 84.37% 85.88%
nanoserde 0.1.35 68.72% 69.41% 56.83% 88.77% 85.40%
parity-scale-codec 3.6.5 33.26% 65.42% 90.59% 100.00% 99.98%
postcard 1.0.8 47.68% 67.00% 87.84% 95.97% 95.73%
pot 3.0.0 8.12% 24.59% 53.88% 71.19% 80.13%
prost 0.12.1 16.58%* 5.79%* 38.46% 54.09% 69.76% 73.70%
rkyv 0.7.42 53.50% 100.00%* 67.41%* 54.07% 83.86% 89.93%
rmp-serde 1.1.2 13.92% 45.38% 76.04% 86.85% 87.75%
ron 0.8.1 2.19% 8.20% 22.03% 48.97% 57.81%
savefile 0.16.2 81.95% 73.15% 56.93% 88.98% 85.55%
serde_bare 0.5.0 27.94% 57.81% 90.59% 99.96% 100.00%
serde_cbor 0.11.2 10.73% 28.67% 29.09% 61.78% 72.30%
serde_json 1.0.108 4.96% 18.67% 19.89% 45.65% 55.19%
simd-json 0.13.4 8.23% 29.88% 19.89% 45.65% 55.19%
speedy 0.8.6 68.18% 81.11% 71.80% 90.64% 94.36%

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 0.00%* 0.40%*
alkahest 0.1.5 50.04%* 2.06%*
capnp 0.18.3 1.41%* 21.92%*
flatbuffers 23.5.26 44.95%* 0.00%* 8.16%* 0.01%*
rkyv 0.7.42 100.00%* 0.00%* 100.00%* 0.02%* 100.00%

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
abomonation 0.7.3 640.76 µs 3.1375 ms* 2984682 1410641 1270491
alkahest 0.1.5 811.55 µs 1863391 1234113 1202345
bincode 1.3.3 3.4572 ms 5.5209 ms 1811011 1115281 1025627
bitcode 0.5.0 1.5527 ms 4.5092 ms 870693 866738 870720
borsh 1.1.1 2.6708 ms 3.5583 ms 1486162 1082357 1013550
bson 2.6.0 29.166 ms 62.123 ms 10030880 2833079 1600859
capnp 0.18.3 2.5692 ms 2664040 1511895 1212087
cbor4ii 0.3.1 5.2383 ms 25.885 ms 5878791 1655835 1431390
ciborium 0.2.1 22.100 ms 51.318 ms 5878653 1655791 1431560
databuf 0.5.0 1.9839 ms 4.9907 ms 1288257 1037579 984337
dlhn 0.1.6 5.6472 ms 10.914 ms 1279599 1052061 1021161
flatbuffers 23.5.26 5.4721 ms 2273740 1408408 1235566
msgpacker 0.4.3 2.6695 ms 7.5391 ms 1424043 1128758 1110156
nachricht-serde 0.4.0 45.566 ms 22.478 ms 1728519 1247642 1233323
nanoserde 0.1.35 1.2015 ms 4.3363 ms 1770477 1108304 1029947
parity-scale-codec 3.6.5 2.9293 ms 4.0699 ms 1288257 1039269 986510
postcard 1.0.8 2.2025 ms 5.4008 ms 1279599 1058243 1016738
pot 3.0.0 16.738 ms 35.907 ms 2544810 1447453 1268390
prost 0.12.1 5.0375 ms* 10.937 ms* 11.239 ms 1818378 1307777 1266311
rkyv 0.7.42 1.9010 ms 2.9242 ms* 3.8866 ms* 2029080 1335117 1158855
rmp-serde 1.1.2 10.987 ms 14.045 ms 1703813 1231892 1200208
ron 0.8.1 48.524 ms 123.29 ms 8476284 2181196 1783971
savefile 0.16.2 1.5209 ms 3.6079 ms 1750226 1101682 1027827
serde_bare 0.5.0 4.5105 ms 6.4840 ms 1288257 1037597 984356
serde_cbor 0.11.2 10.147 ms 28.100 ms 5878653 1655791 1431560
serde_json 1.0.108 24.693 ms 40.615 ms 9175594 2334253 1800713
simd-json 0.13.4 13.465 ms 37.567 ms 9175594 2334253 1800713
speedy 0.8.6 964.03 µs 3.2671 ms 1546963 1093532 1013443

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 115.68 µs* 116.33 µs*
alkahest 0.1.5 2.4093 ns* 828.05 ns*
capnp 0.18.3 85.736 ns* 1.1108 µs*
flatbuffers 23.5.26 2.6805 ns* 5.0589 ms* 3.4385 µs* 5.0683 ms*
rkyv 0.7.42 1.2058 ns* 884.78 µs* 424.16 ns* 887.13 µs* 816.33 ns

Comparison

Relative to best. Higher is better.

Serialize / deserialize speed and size

Crate Serialize Deserialize Size Zlib Zstd
abomonation 0.7.3 100.00% 93.20%* 29.17% 61.44% 68.53%
alkahest 0.1.5 78.96% 46.73% 70.23% 72.42%
bincode 1.3.3 18.53% 52.97% 48.08% 77.71% 84.90%
bitcode 0.5.0 41.27% 64.85% 100.00% 100.00% 100.00%
borsh 1.1.1 23.99% 82.18% 58.59% 80.08% 85.91%
bson 2.6.0 2.20% 4.71% 8.68% 30.59% 54.39%
capnp 0.18.3 24.94% 32.68% 57.33% 71.84%
cbor4ii 0.3.1 12.23% 11.30% 14.81% 52.34% 60.83%
ciborium 0.2.1 2.90% 5.70% 14.81% 52.35% 60.82%
databuf 0.5.0 32.30% 58.59% 67.59% 83.53% 88.46%
dlhn 0.1.6 11.35% 26.79% 68.04% 82.38% 85.27%
flatbuffers 23.5.26 11.71% 38.29% 61.54% 70.47%
msgpacker 0.4.3 24.00% 38.79% 61.14% 76.79% 78.43%
nachricht-serde 0.4.0 1.41% 13.01% 50.37% 69.47% 70.60%
nanoserde 0.1.35 53.33% 67.44% 49.18% 78.20% 84.54%
parity-scale-codec 3.6.5 21.87% 71.85% 67.59% 83.40% 88.26%
postcard 1.0.8 29.09% 54.14% 68.04% 81.90% 85.64%
pot 3.0.0 3.83% 8.14% 34.21% 59.88% 68.65%
prost 0.12.1 12.72%* 5.86%* 26.02% 47.88% 66.28% 68.76%
rkyv 0.7.42 33.71% 100.00%* 75.24%* 42.91% 64.92% 75.14%
rmp-serde 1.1.2 5.83% 20.82% 51.10% 70.36% 72.55%
ron 0.8.1 1.32% 2.37% 10.27% 39.74% 48.81%
savefile 0.16.2 42.13% 81.05% 49.75% 78.67% 84.71%
serde_bare 0.5.0 14.21% 45.10% 67.59% 83.53% 88.46%
serde_cbor 0.11.2 6.31% 10.41% 14.81% 52.35% 60.82%
serde_json 1.0.108 2.59% 7.20% 9.49% 37.13% 48.35%
simd-json 0.13.4 4.76% 7.78% 9.49% 37.13% 48.35%
speedy 0.8.6 66.47% 89.50% 56.28% 79.26% 85.92%

Zero-copy deserialization speed

Crate Access Read Update
abomonation 0.7.3 0.00%* 0.36%*
alkahest 0.1.5 50.05%* 51.22%*
capnp 0.18.3 1.41%* 38.19%*
flatbuffers 23.5.26 44.98%* 0.00%* 12.34%* 0.01%*
rkyv 0.7.42 100.00%* 0.00%* 100.00%* 0.05%* 100.00%

Footnotes:

* 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)

About

Benchmarks for rust serialization frameworks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.5%
  • Other 0.5%