musli

Benchmarks and size comparisons

The following are the results of preliminary benchmarking and should be taken with a big grain of 🧂.

Identifiers which are used in tests:

The following are one section for each kind of benchmark we perform. They range from “Full features” to more specialized ones like zerocopy comparisons.

Below you’ll also find size comparisons.

Full features

These frameworks provide a fair comparison against Müsli on various areas since they support the same set of features in what types of data they can represent.

More:

full/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/musli_descriptive 705.13ns ± 0.68ns 703.92ns — 706.57ns Report 📓
dec/primitives/musli_storage 620.44ns ± 0.49ns 619.55ns — 621.47ns Report 📓
dec/primitives/musli_storage_packed 15.06ns ± 0.02ns 15.03ns — 15.10ns Report 📓
dec/primitives/musli_value1 317.80ns ± 0.61ns 316.89ns — 319.19ns Report 📓
dec/primitives/musli_wire 578.86ns ± 0.81ns 577.40ns — 580.58ns Report 📓
dec/primitives/postcard 269.58ns ± 0.27ns 269.16ns — 270.19ns Report 📓
dec/primitives/serde_bincode 131.58ns ± 0.09ns 131.42ns — 131.77ns Report 📓
dec/primitives/serde_bitcode 1.28μs ± 1.41ns 1.27μs — 1.28μs Report 📓
dec/primitives/serde_rmp 345.50ns ± 0.34ns 344.89ns — 346.22ns Report 📓
full/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_descriptive 852.80ns ± 0.91ns 851.12ns — 854.67ns Report 📓
enc/primitives/musli_storage 735.16ns ± 0.98ns 733.29ns — 737.12ns Report 📓
enc/primitives/musli_storage_packed 64.81ns ± 0.06ns 64.71ns — 64.94ns Report 📓
enc/primitives/musli_value1 1.11μs ± 1.47ns 1.10μs — 1.11μs Report 📓
enc/primitives/musli_wire 706.17ns ± 0.75ns 704.76ns — 707.69ns Report 📓
enc/primitives/postcard 431.66ns ± 0.39ns 430.99ns — 432.49ns Report 📓
enc/primitives/serde_bincode 114.55ns ± 0.13ns 114.33ns — 114.85ns Report 📓
enc/primitives/serde_bitcode 3.89μs ± 11.53ns 3.87μs — 3.92μs Report 📓
enc/primitives/serde_rmp 267.70ns ± 0.80ns 266.46ns — 269.51ns Report 📓
full/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_descriptive 724.49ns ± 0.90ns 722.88ns — 726.39ns Report 📓
dec/primpacked/musli_storage 668.17ns ± 0.75ns 666.75ns — 669.68ns Report 📓
dec/primpacked/musli_storage_packed 26.13ns ± 0.03ns 26.08ns — 26.20ns Report 📓
dec/primpacked/musli_value1 317.33ns ± 0.31ns 316.80ns — 318.00ns Report 📓
dec/primpacked/musli_wire 583.63ns ± 0.38ns 582.95ns — 584.44ns Report 📓
dec/primpacked/postcard 262.88ns ± 0.28ns 262.38ns — 263.49ns Report 📓
dec/primpacked/serde_bincode 104.11ns ± 0.14ns 103.87ns — 104.42ns Report 📓
dec/primpacked/serde_bitcode 1.51μs ± 1.75ns 1.51μs — 1.51μs Report 📓
dec/primpacked/serde_rmp 404.61ns ± 0.39ns 403.92ns — 405.44ns Report 📓
full/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_descriptive 762.40ns ± 0.58ns 761.32ns — 763.58ns Report 📓
enc/primpacked/musli_storage 672.17ns ± 1.05ns 670.23ns — 674.36ns Report 📓
enc/primpacked/musli_storage_packed 65.90ns ± 0.05ns 65.81ns — 66.00ns Report 📓
enc/primpacked/musli_value1 1.46μs ± 1.45ns 1.46μs — 1.46μs Report 📓
enc/primpacked/musli_wire 652.75ns ± 0.76ns 651.31ns — 654.27ns Report 📓
enc/primpacked/postcard 432.03ns ± 0.38ns 431.36ns — 432.83ns Report 📓
enc/primpacked/serde_bincode 126.63ns ± 0.13ns 126.41ns — 126.92ns Report 📓
enc/primpacked/serde_bitcode 4.47μs ± 11.24ns 4.46μs — 4.50μs Report 📓
enc/primpacked/serde_rmp 327.06ns ± 0.32ns 326.49ns — 327.74ns Report 📓
full/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/musli_descriptive 1.64μs ± 1.44ns 1.63μs — 1.64μs Report 📓
dec/medium_enum/musli_storage 1.44μs ± 2.16ns 1.44μs — 1.44μs Report 📓
dec/medium_enum/musli_storage_packed 486.51ns ± 0.47ns 485.63ns — 487.47ns Report 📓
dec/medium_enum/musli_value1 821.66ns ± 0.63ns 820.51ns — 822.98ns Report 📓
dec/medium_enum/musli_wire 1.38μs ± 1.13ns 1.38μs — 1.38μs Report 📓
dec/medium_enum/postcard 1.18μs ± 1.42ns 1.18μs — 1.18μs Report 📓
dec/medium_enum/serde_bincode 945.97ns ± 0.81ns 944.49ns — 947.65ns Report 📓
dec/medium_enum/serde_bitcode 9.49μs ± 13.96ns 9.47μs — 9.52μs Report 📓
dec/medium_enum/serde_rmp 2.32μs ± 2.16ns 2.31μs — 2.32μs Report 📓
full/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/musli_descriptive 1.46μs ± 1.01ns 1.46μs — 1.46μs Report 📓
enc/medium_enum/musli_storage 1.19μs ± 1.07ns 1.18μs — 1.19μs Report 📓
enc/medium_enum/musli_storage_packed 271.40ns ± 0.36ns 270.75ns — 272.17ns Report 📓
enc/medium_enum/musli_value1 3.17μs ± 3.62ns 3.16μs — 3.18μs Report 📓
enc/medium_enum/musli_wire 1.19μs ± 1.91ns 1.19μs — 1.20μs Report 📓
enc/medium_enum/postcard 896.65ns ± 1.15ns 894.69ns — 899.17ns Report 📓
enc/medium_enum/serde_bincode 314.74ns ± 0.31ns 314.19ns — 315.40ns Report 📓
enc/medium_enum/serde_bitcode 12.86μs ± 17.91ns 12.83μs — 12.90μs Report 📓
enc/medium_enum/serde_rmp 722.79ns ± 1.18ns 720.84ns — 725.41ns Report 📓
full/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_descriptive 241.21μs ± 248.53ns 240.78μs — 241.75μs Report 📓
dec/large/musli_storage 192.22μs ± 325.19ns 191.66μs — 192.93μs Report 📓
dec/large/musli_storage_packed 50.92μs ± 55.35ns 50.82μs — 51.04μs Report 📓
dec/large/musli_value1 134.58μs ± 785.59ns 132.99μs — 136.08μs Report 📓
dec/large/musli_wire 223.85μs ± 263.74ns 223.41μs — 224.43μs Report 📓
dec/large/postcard 89.19μs ± 94.44ns 89.03μs — 89.40μs Report 📓
dec/large/serde_bincode 68.29μs ± 135.08ns 68.09μs — 68.60μs Report 📓
dec/large/serde_bitcode 101.15μs ± 199.03ns 100.82μs — 101.59μs Report 📓
dec/large/serde_rmp 223.52μs ± 334.52ns 222.94μs — 224.25μs Report 📓
full/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_descriptive 165.24μs ± 233.54ns 164.86μs — 165.76μs Report 📓
enc/large/musli_storage 132.96μs ± 146.78ns 132.69μs — 133.27μs Report 📓
enc/large/musli_storage_packed 32.19μs ± 53.34ns 32.11μs — 32.31μs Report 📓
enc/large/musli_value1 733.10μs ± 1.45μs 730.98μs — 736.43μs Report 📓
enc/large/musli_wire 140.11μs ± 174.82ns 139.85μs — 140.52μs Report 📓
enc/large/postcard 113.16μs ± 283.80ns 112.69μs — 113.79μs Report 📓
enc/large/serde_bincode 42.52μs ± 55.87ns 42.43μs — 42.65μs Report 📓
enc/large/serde_bitcode 109.59μs ± 183.48ns 109.28μs — 109.99μs Report 📓
enc/large/serde_rmp 155.17μs ± 162.03ns 154.88μs — 155.51μs Report 📓
full/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_descriptive 3.42μs ± 5.36ns 3.41μs — 3.43μs Report 📓
dec/allocated/musli_storage 3.28μs ± 4.14ns 3.27μs — 3.29μs Report 📓
dec/allocated/musli_storage_packed 2.41μs ± 2.36ns 2.40μs — 2.41μs Report 📓
dec/allocated/musli_value1 2.13μs ± 2.35ns 2.13μs — 2.14μs Report 📓
dec/allocated/musli_wire 3.29μs ± 3.54ns 3.29μs — 3.30μs Report 📓
dec/allocated/postcard 3.43μs ± 4.58ns 3.42μs — 3.44μs Report 📓
dec/allocated/serde_bincode 3.28μs ± 3.47ns 3.28μs — 3.29μs Report 📓
dec/allocated/serde_bitcode 6.13μs ± 5.22ns 6.12μs — 6.14μs Report 📓
dec/allocated/serde_rmp 4.20μs ± 4.43ns 4.19μs — 4.21μs Report 📓
full/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_descriptive 719.64ns ± 0.76ns 718.25ns — 721.23ns Report 📓
enc/allocated/musli_storage 672.26ns ± 0.86ns 670.68ns — 674.03ns Report 📓
enc/allocated/musli_storage_packed 249.03ns ± 0.26ns 248.57ns — 249.59ns Report 📓
enc/allocated/musli_value1 2.53μs ± 3.77ns 2.52μs — 2.54μs Report 📓
enc/allocated/musli_wire 646.95ns ± 0.78ns 645.52ns — 648.58ns Report 📓
enc/allocated/postcard 1.32μs ± 1.28ns 1.31μs — 1.32μs Report 📓
enc/allocated/serde_bincode 390.27ns ± 0.41ns 389.52ns — 391.10ns Report 📓
enc/allocated/serde_bitcode 8.62μs ± 11.98ns 8.60μs — 8.64μs Report 📓
enc/allocated/serde_rmp 777.01ns ± 0.63ns 775.94ns — 778.37ns Report 📓

Text-based formats

These are text-based formats, which support the full feature set of this test suite.

More:

text/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/musli_json 4.49μs ± 6.34ns 4.48μs — 4.50μs Report 📓
dec/primitives/serde_json 4.38μs ± 6.54ns 4.37μs — 4.39μs Report 📓
text/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_json 1.23μs ± 0.88ns 1.22μs — 1.23μs Report 📓
enc/primitives/serde_json 1.31μs ± 1.93ns 1.31μs — 1.31μs Report 📓
text/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_json 5.25μs ± 5.63ns 5.24μs — 5.26μs Report 📓
dec/primpacked/serde_json 4.82μs ± 6.24ns 4.80μs — 4.83μs Report 📓
text/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_json 1.24μs ± 1.65ns 1.24μs — 1.25μs Report 📓
enc/primpacked/serde_json 1.38μs ± 1.06ns 1.38μs — 1.39μs Report 📓
text/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/musli_json 9.59μs ± 10.38ns 9.58μs — 9.62μs Report 📓
dec/medium_enum/serde_json 8.10μs ± 13.36ns 8.08μs — 8.13μs Report 📓
text/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/musli_json 2.74μs ± 3.79ns 2.74μs — 2.75μs Report 📓
enc/medium_enum/serde_json 2.55μs ± 1.88ns 2.54μs — 2.55μs Report 📓
text/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_json 1.15ms ± 1.59μs 1.14ms — 1.15ms Report 📓
dec/large/serde_json 771.78μs ± 824.55ns 770.51μs — 773.65μs Report 📓
text/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_json 275.49μs ± 263.66ns 275.06μs — 276.08μs Report 📓
enc/large/serde_json 310.71μs ± 332.68ns 310.16μs — 311.45μs Report 📓
text/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_json 10.71μs ± 13.01ns 10.69μs — 10.74μs Report 📓
dec/allocated/serde_json 7.70μs ± 7.57ns 7.69μs — 7.72μs Report 📓
text/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_json 2.40μs ± 2.76ns 2.40μs — 2.41μs Report 📓
enc/allocated/serde_json 2.45μs ± 3.40ns 2.44μs — 2.45μs Report 📓

Fewer features

Missing features:

This is a suite where support for 128-bit integers and maps are disabled. Usually because the underlying framework lacks support for them.

More:

fewer/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/musli_descriptive 556.17ns ± 0.64ns 555.09ns — 557.57ns Report 📓
dec/primitives/musli_storage 482.20ns ± 0.49ns 481.27ns — 483.19ns Report 📓
dec/primitives/musli_storage_packed 11.57ns ± 0.01ns 11.55ns — 11.60ns Report 📓
dec/primitives/musli_value1 282.57ns ± 0.33ns 281.97ns — 283.26ns Report 📓
dec/primitives/musli_wire 434.80ns ± 0.49ns 433.89ns — 435.82ns Report 📓
dec/primitives/serde_cbor 1.69μs ± 1.55ns 1.69μs — 1.70μs Report 📓
fewer/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_descriptive 504.34ns ± 0.48ns 503.44ns — 505.30ns Report 📓
enc/primitives/musli_storage 394.62ns ± 0.53ns 393.69ns — 395.75ns Report 📓
enc/primitives/musli_storage_packed 53.12ns ± 0.06ns 53.02ns — 53.24ns Report 📓
enc/primitives/musli_value1 1.04μs ± 1.70ns 1.04μs — 1.04μs Report 📓
enc/primitives/musli_wire 376.33ns ± 0.85ns 374.73ns — 378.08ns Report 📓
enc/primitives/serde_cbor 428.49ns ± 0.30ns 427.96ns — 429.13ns Report 📓
fewer/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_descriptive 572.07ns ± 0.58ns 571.17ns — 573.40ns Report 📓
dec/primpacked/musli_storage 507.27ns ± 0.54ns 506.28ns — 508.41ns Report 📓
dec/primpacked/musli_storage_packed 22.18ns ± 0.02ns 22.13ns — 22.23ns Report 📓
dec/primpacked/musli_value1 285.22ns ± 0.24ns 284.80ns — 285.73ns Report 📓
dec/primpacked/musli_wire 478.54ns ± 0.41ns 477.80ns — 479.42ns Report 📓
dec/primpacked/serde_cbor 1.81μs ± 3.34ns 1.80μs — 1.81μs Report 📓
fewer/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_descriptive 459.74ns ± 0.51ns 458.76ns — 460.75ns Report 📓
enc/primpacked/musli_storage 338.64ns ± 0.59ns 337.51ns — 339.81ns Report 📓
enc/primpacked/musli_storage_packed 57.22ns ± 0.05ns 57.13ns — 57.33ns Report 📓
enc/primpacked/musli_value1 1.20μs ± 1.62ns 1.19μs — 1.20μs Report 📓
enc/primpacked/musli_wire 337.93ns ± 0.38ns 337.22ns — 338.71ns Report 📓
enc/primpacked/serde_cbor 488.22ns ± 0.51ns 487.30ns — 489.29ns Report 📓
fewer/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/musli_descriptive 1.48μs ± 2.66ns 1.47μs — 1.48μs Report 📓
dec/medium_enum/musli_storage 1.26μs ± 1.16ns 1.26μs — 1.27μs Report 📓
dec/medium_enum/musli_storage_packed 467.89ns ± 0.63ns 466.80ns — 469.24ns Report 📓
dec/medium_enum/musli_value1 793.88ns ± 0.80ns 792.63ns — 795.69ns Report 📓
dec/medium_enum/musli_wire 1.27μs ± 1.36ns 1.27μs — 1.27μs Report 📓
dec/medium_enum/serde_cbor 4.71μs ± 5.14ns 4.70μs — 4.72μs Report 📓
fewer/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/musli_descriptive 1.17μs ± 1.62ns 1.17μs — 1.17μs Report 📓
enc/medium_enum/musli_storage 831.65ns ± 0.71ns 830.40ns — 833.15ns Report 📓
enc/medium_enum/musli_storage_packed 274.81ns ± 0.23ns 274.39ns — 275.29ns Report 📓
enc/medium_enum/musli_value1 3.05μs ± 2.49ns 3.04μs — 3.05μs Report 📓
enc/medium_enum/musli_wire 877.66ns ± 0.96ns 876.01ns — 879.75ns Report 📓
enc/medium_enum/serde_cbor 1.03μs ± 0.92ns 1.03μs — 1.03μs Report 📓
fewer/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_descriptive 252.05μs ± 382.91ns 251.40μs — 252.88μs Report 📓
dec/large/musli_storage 201.21μs ± 213.20ns 200.84μs — 201.67μs Report 📓
dec/large/musli_storage_packed 43.15μs ± 37.90ns 43.08μs — 43.23μs Report 📓
dec/large/musli_value1 129.12μs ± 265.71ns 128.64μs — 129.68μs Report 📓
dec/large/musli_wire 227.62μs ± 268.40ns 227.17μs — 228.21μs Report 📓
dec/large/serde_cbor 572.42μs ± 560.26ns 571.43μs — 573.61μs Report 📓
fewer/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_descriptive 187.21μs ± 154.31ns 186.95μs — 187.55μs Report 📓
enc/large/musli_storage 144.98μs ± 137.66ns 144.74μs — 145.28μs Report 📓
enc/large/musli_storage_packed 33.94μs ± 27.59ns 33.89μs — 34.00μs Report 📓
enc/large/musli_value1 768.44μs ± 1.13μs 766.50μs — 770.90μs Report 📓
enc/large/musli_wire 155.09μs ± 146.82ns 154.83μs — 155.40μs Report 📓
enc/large/serde_cbor 172.07μs ± 248.19ns 171.66μs — 172.63μs Report 📓
fewer/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_descriptive 2.49μs ± 2.64ns 2.48μs — 2.49μs Report 📓
dec/allocated/musli_storage 2.26μs ± 2.34ns 2.26μs — 2.27μs Report 📓
dec/allocated/musli_storage_packed 1.75μs ± 2.66ns 1.75μs — 1.76μs Report 📓
dec/allocated/musli_value1 1.46μs ± 1.76ns 1.46μs — 1.47μs Report 📓
dec/allocated/musli_wire 2.38μs ± 4.21ns 2.37μs — 2.39μs Report 📓
dec/allocated/serde_cbor 5.08μs ± 5.04ns 5.07μs — 5.09μs Report 📓
fewer/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_descriptive 540.83ns ± 0.72ns 539.51ns — 542.31ns Report 📓
enc/allocated/musli_storage 482.25ns ± 0.49ns 481.36ns — 483.26ns Report 📓
enc/allocated/musli_storage_packed 212.04ns ± 0.22ns 211.62ns — 212.50ns Report 📓
enc/allocated/musli_value1 1.96μs ± 2.54ns 1.95μs — 1.96μs Report 📓
enc/allocated/musli_wire 439.35ns ± 0.40ns 438.62ns — 440.20ns Report 📓
enc/allocated/serde_cbor 656.73ns ± 0.71ns 655.63ns — 658.35ns Report 📓

Speedy

Missing features:

This is a test suite for speedy features.

More:

speedy/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/musli_descriptive 645.23ns ± 0.54ns 644.24ns — 646.36ns Report 📓
dec/primitives/musli_storage 567.66ns ± 0.62ns 566.61ns — 569.00ns Report 📓
dec/primitives/musli_storage_packed 15.97ns ± 0.02ns 15.94ns — 16.01ns Report 📓
dec/primitives/musli_value1 291.99ns ± 0.41ns 291.37ns — 292.92ns Report 📓
dec/primitives/musli_wire 544.75ns ± 0.89ns 543.20ns — 546.66ns Report 📓
dec/primitives/speedy 17.79ns ± 0.02ns 17.75ns — 17.84ns Report 📓
speedy/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_descriptive 811.75ns ± 1.04ns 810.01ns — 814.06ns Report 📓
enc/primitives/musli_storage 704.97ns ± 0.64ns 703.87ns — 706.34ns Report 📓
enc/primitives/musli_storage_packed 59.22ns ± 0.08ns 59.10ns — 59.39ns Report 📓
enc/primitives/musli_value1 1.06μs ± 1.13ns 1.06μs — 1.06μs Report 📓
enc/primitives/musli_wire 659.38ns ± 0.76ns 658.04ns — 661.01ns Report 📓
enc/primitives/speedy 16.16ns ± 0.01ns 16.13ns — 16.19ns Report 📓
speedy/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_descriptive 703.62ns ± 0.72ns 702.32ns — 705.12ns Report 📓
dec/primpacked/musli_storage 635.76ns ± 0.68ns 634.52ns — 637.17ns Report 📓
dec/primpacked/musli_storage_packed 23.59ns ± 0.02ns 23.55ns — 23.62ns Report 📓
dec/primpacked/musli_value1 303.91ns ± 0.29ns 303.39ns — 304.52ns Report 📓
dec/primpacked/musli_wire 573.08ns ± 0.51ns 572.16ns — 574.14ns Report 📓
dec/primpacked/speedy 20.82ns ± 0.03ns 20.76ns — 20.89ns Report 📓
speedy/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_descriptive 772.31ns ± 0.99ns 770.49ns — 774.37ns Report 📓
enc/primpacked/musli_storage 650.85ns ± 0.76ns 649.42ns — 652.41ns Report 📓
enc/primpacked/musli_storage_packed 62.85ns ± 0.07ns 62.72ns — 63.00ns Report 📓
enc/primpacked/musli_value1 1.22μs ± 1.47ns 1.21μs — 1.22μs Report 📓
enc/primpacked/musli_wire 652.02ns ± 0.69ns 650.73ns — 653.43ns Report 📓
enc/primpacked/speedy 16.84ns ± 0.02ns 16.80ns — 16.88ns Report 📓
speedy/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/musli_descriptive 1.59μs ± 1.69ns 1.58μs — 1.59μs Report 📓
dec/medium_enum/musli_storage 1.46μs ± 1.40ns 1.45μs — 1.46μs Report 📓
dec/medium_enum/musli_storage_packed 547.54ns ± 0.41ns 546.76ns — 548.38ns Report 📓
dec/medium_enum/musli_value1 792.47ns ± 1.14ns 790.49ns — 794.94ns Report 📓
dec/medium_enum/musli_wire 1.36μs ± 2.50ns 1.36μs — 1.37μs Report 📓
dec/medium_enum/speedy 584.92ns ± 0.67ns 583.72ns — 586.34ns Report 📓
speedy/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/musli_descriptive 1.41μs ± 1.71ns 1.41μs — 1.42μs Report 📓
enc/medium_enum/musli_storage 1.16μs ± 1.32ns 1.15μs — 1.16μs Report 📓
enc/medium_enum/musli_storage_packed 260.63ns ± 0.19ns 260.29ns — 261.04ns Report 📓
enc/medium_enum/musli_value1 3.01μs ± 3.75ns 3.00μs — 3.02μs Report 📓
enc/medium_enum/musli_wire 1.13μs ± 1.00ns 1.13μs — 1.13μs Report 📓
enc/medium_enum/speedy 306.29ns ± 0.34ns 305.63ns — 306.96ns Report 📓
speedy/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_descriptive 275.14μs ± 269.03ns 274.70μs — 275.74μs Report 📓
dec/large/musli_storage 221.42μs ± 224.02ns 221.04μs — 221.91μs Report 📓
dec/large/musli_storage_packed 77.15μs ± 103.65ns 76.97μs — 77.37μs Report 📓
dec/large/musli_value1 140.34μs ± 524.34ns 139.43μs — 141.48μs Report 📓
dec/large/musli_wire 256.28μs ± 305.00ns 255.81μs — 256.98μs Report 📓
dec/large/speedy 71.17μs ± 81.37ns 71.03μs — 71.35μs Report 📓
speedy/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_descriptive 178.12μs ± 173.96ns 177.82μs — 178.50μs Report 📓
enc/large/musli_storage 145.74μs ± 164.49ns 145.46μs — 146.10μs Report 📓
enc/large/musli_storage_packed 34.03μs ± 35.37ns 33.97μs — 34.11μs Report 📓
enc/large/musli_value1 733.26μs ± 2.38μs 729.08μs — 738.38μs Report 📓
enc/large/musli_wire 152.38μs ± 144.34ns 152.14μs — 152.70μs Report 📓
enc/large/speedy 20.39μs ± 21.12ns 20.35μs — 20.43μs Report 📓
speedy/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_descriptive 3.80μs ± 5.79ns 3.79μs — 3.81μs Report 📓
dec/allocated/musli_storage 3.36μs ± 3.76ns 3.35μs — 3.37μs Report 📓
dec/allocated/musli_storage_packed 2.79μs ± 2.99ns 2.78μs — 2.79μs Report 📓
dec/allocated/musli_value1 1.94μs ± 2.47ns 1.94μs — 1.95μs Report 📓
dec/allocated/musli_wire 3.60μs ± 4.04ns 3.59μs — 3.61μs Report 📓
dec/allocated/speedy 3.36μs ± 4.75ns 3.35μs — 3.37μs Report 📓
speedy/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_descriptive 723.32ns ± 1.39ns 721.10ns — 726.43ns Report 📓
enc/allocated/musli_storage 653.26ns ± 0.92ns 651.63ns — 655.24ns Report 📓
enc/allocated/musli_storage_packed 239.87ns ± 0.39ns 239.15ns — 240.66ns Report 📓
enc/allocated/musli_value1 2.32μs ± 3.05ns 2.31μs — 2.33μs Report 📓
enc/allocated/musli_wire 644.96ns ± 0.64ns 643.73ns — 646.25ns Report 📓
enc/allocated/speedy 503.87ns ± 0.59ns 502.74ns — 505.05ns Report 📓

Müsli vs rkyv

Missing features:

Comparison between musli-zerocopy and rkyv.

Note that musli-zerocopy only supports the primitives benchmark.

More:

zerocopy-rkyv/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/musli_zerocopy 4.00ns ± 0.00ns 4.00ns — 4.01ns Report 📓
dec/primitives/rkyv 14.62ns ± 0.02ns 14.59ns — 14.66ns Report 📓
zerocopy-rkyv/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_zerocopy 20.08ns ± 0.03ns 20.04ns — 20.14ns Report 📓
enc/primitives/rkyv 32.57ns ± 0.03ns 32.51ns — 32.64ns Report 📓
zerocopy-rkyv/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_zerocopy 2.65ns ± 0.00ns 2.65ns — 2.66ns Report 📓
dec/primpacked/rkyv 14.20ns ± 0.01ns 14.18ns — 14.23ns Report 📓
zerocopy-rkyv/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_zerocopy 16.81ns ± 0.01ns 16.78ns — 16.84ns Report 📓
enc/primpacked/rkyv 33.24ns ± 0.05ns 33.17ns — 33.36ns Report 📓

Müsli vs zerocopy

Compares musli-zerocopy with zerocopy.

Note that zerocopy only supports packed primitives, so we’re only comparing with that suite.

More:

zerocopy-zerocopy/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/musli_zerocopy 2.66ns ± 0.00ns 2.65ns — 2.66ns Report 📓
dec/primpacked/zerocopy 6.64ns ± 0.01ns 6.63ns — 6.65ns Report 📓
zerocopy-zerocopy/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/musli_zerocopy 17.85ns ± 0.02ns 17.83ns — 17.89ns Report 📓
enc/primpacked/zerocopy 8.42ns ± 0.01ns 8.40ns — 8.44ns Report 📓

Bitcode derive

Missing features:

Uses a custom derive-based framework which does not support everything Müsli and serde does.

More:

bitcode-derive/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/derive_bitcode 251.71ns ± 0.37ns 251.07ns — 252.50ns Report 📓
dec/primitives/musli_descriptive 719.42ns ± 0.62ns 718.26ns — 720.67ns Report 📓
dec/primitives/musli_storage 637.39ns ± 0.83ns 635.87ns — 639.11ns Report 📓
dec/primitives/musli_storage_packed 13.36ns ± 0.01ns 13.34ns — 13.39ns Report 📓
dec/primitives/musli_wire 578.82ns ± 0.49ns 577.94ns — 579.85ns Report 📓
bitcode-derive/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/derive_bitcode 1.30μs ± 1.67ns 1.30μs — 1.31μs Report 📓
enc/primitives/musli_descriptive 876.29ns ± 1.06ns 874.31ns — 878.44ns Report 📓
enc/primitives/musli_storage 769.70ns ± 0.82ns 768.28ns — 771.46ns Report 📓
enc/primitives/musli_storage_packed 61.91ns ± 0.04ns 61.84ns — 62.00ns Report 📓
enc/primitives/musli_wire 696.10ns ± 0.76ns 694.74ns — 697.69ns Report 📓
bitcode-derive/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/derive_bitcode 250.14ns ± 0.24ns 249.71ns — 250.64ns Report 📓
dec/primpacked/musli_descriptive 726.97ns ± 0.84ns 725.50ns — 728.78ns Report 📓
dec/primpacked/musli_storage 671.99ns ± 1.20ns 669.82ns — 674.51ns Report 📓
dec/primpacked/musli_storage_packed 26.11ns ± 0.02ns 26.07ns — 26.15ns Report 📓
dec/primpacked/musli_wire 576.13ns ± 0.69ns 575.01ns — 577.69ns Report 📓
bitcode-derive/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/derive_bitcode 1.31μs ± 1.38ns 1.30μs — 1.31μs Report 📓
enc/primpacked/musli_descriptive 781.25ns ± 0.81ns 779.74ns — 782.91ns Report 📓
enc/primpacked/musli_storage 666.80ns ± 1.11ns 664.71ns — 669.08ns Report 📓
enc/primpacked/musli_storage_packed 66.07ns ± 0.08ns 65.93ns — 66.24ns Report 📓
enc/primpacked/musli_wire 652.96ns ± 0.61ns 651.81ns — 654.21ns Report 📓
bitcode-derive/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/derive_bitcode 3.27μs ± 3.68ns 3.27μs — 3.28μs Report 📓
dec/medium_enum/musli_descriptive 1.83μs ± 2.37ns 1.82μs — 1.83μs Report 📓
dec/medium_enum/musli_storage 1.62μs ± 1.60ns 1.62μs — 1.62μs Report 📓
dec/medium_enum/musli_storage_packed 697.13ns ± 1.09ns 695.35ns — 699.57ns Report 📓
dec/medium_enum/musli_wire 1.56μs ± 1.75ns 1.55μs — 1.56μs Report 📓
bitcode-derive/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/derive_bitcode 13.59μs ± 15.90ns 13.56μs — 13.62μs Report 📓
enc/medium_enum/musli_descriptive 1.49μs ± 1.50ns 1.48μs — 1.49μs Report 📓
enc/medium_enum/musli_storage 1.20μs ± 1.76ns 1.19μs — 1.20μs Report 📓
enc/medium_enum/musli_storage_packed 267.76ns ± 0.34ns 267.23ns — 268.54ns Report 📓
enc/medium_enum/musli_wire 1.20μs ± 1.12ns 1.20μs — 1.20μs Report 📓
bitcode-derive/dec/large
Report 📓
Group Mean Interval Link
dec/large/derive_bitcode 33.22μs ± 47.17ns 33.13μs — 33.32μs Report 📓
dec/large/musli_descriptive 245.52μs ± 317.73ns 245.03μs — 246.24μs Report 📓
dec/large/musli_storage 196.62μs ± 162.48ns 196.33μs — 196.96μs Report 📓
dec/large/musli_storage_packed 55.60μs ± 49.59ns 55.51μs — 55.71μs Report 📓
dec/large/musli_wire 228.42μs ± 273.79ns 227.92μs — 228.99μs Report 📓
bitcode-derive/enc/large
Report 📓
Group Mean Interval Link
enc/large/derive_bitcode 86.17μs ± 203.41ns 85.83μs — 86.62μs Report 📓
enc/large/musli_descriptive 171.23μs ± 238.98ns 170.82μs — 171.75μs Report 📓
enc/large/musli_storage 135.60μs ± 183.85ns 135.34μs — 136.02μs Report 📓
enc/large/musli_storage_packed 32.24μs ± 79.88ns 32.11μs — 32.42μs Report 📓
enc/large/musli_wire 144.95μs ± 203.81ns 144.61μs — 145.40μs Report 📓
bitcode-derive/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/derive_bitcode 3.93μs ± 5.10ns 3.92μs — 3.94μs Report 📓
dec/allocated/musli_descriptive 3.70μs ± 3.76ns 3.69μs — 3.71μs Report 📓
dec/allocated/musli_storage 3.48μs ± 3.74ns 3.47μs — 3.49μs Report 📓
dec/allocated/musli_storage_packed 2.84μs ± 2.69ns 2.83μs — 2.84μs Report 📓
dec/allocated/musli_wire 3.65μs ± 3.01ns 3.65μs — 3.66μs Report 📓
bitcode-derive/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/derive_bitcode 7.28μs ± 11.43ns 7.26μs — 7.30μs Report 📓
enc/allocated/musli_descriptive 698.53ns ± 0.52ns 697.61ns — 699.65ns Report 📓
enc/allocated/musli_storage 763.17ns ± 0.60ns 762.21ns — 764.52ns Report 📓
enc/allocated/musli_storage_packed 243.30ns ± 0.32ns 242.71ns — 243.96ns Report 📓
enc/allocated/musli_wire 636.03ns ± 0.99ns 634.20ns — 638.07ns Report 📓

BSON

Missing features:

Specific comparison to BSON, because the format is limited in capabilities.

More:

bson/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/bson2 2.99μs ± 3.00ns 2.99μs — 3.00μs Report 📓
dec/primitives/musli_descriptive 542.67ns ± 0.51ns 541.76ns — 543.77ns Report 📓
dec/primitives/musli_storage 464.96ns ± 0.55ns 463.94ns — 466.11ns Report 📓
dec/primitives/musli_storage_packed 11.51ns ± 0.01ns 11.49ns — 11.53ns Report 📓
dec/primitives/musli_wire 423.77ns ± 0.50ns 422.92ns — 424.88ns Report 📓
bson/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/bson2 1.35μs ± 1.17ns 1.34μs — 1.35μs Report 📓
enc/primitives/musli_descriptive 488.60ns ± 0.61ns 487.51ns — 489.91ns Report 📓
enc/primitives/musli_storage 380.33ns ± 0.30ns 379.79ns — 380.97ns Report 📓
enc/primitives/musli_storage_packed 53.04ns ± 0.04ns 52.97ns — 53.12ns Report 📓
enc/primitives/musli_wire 355.11ns ± 0.53ns 354.10ns — 356.18ns Report 📓
bson/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/bson2 3.87μs ± 5.67ns 3.86μs — 3.89μs Report 📓
dec/primpacked/musli_descriptive 571.88ns ± 0.54ns 570.91ns — 573.03ns Report 📓
dec/primpacked/musli_storage 502.21ns ± 0.65ns 501.04ns — 503.57ns Report 📓
dec/primpacked/musli_storage_packed 22.17ns ± 0.01ns 22.14ns — 22.20ns Report 📓
dec/primpacked/musli_wire 485.25ns ± 0.52ns 484.33ns — 486.34ns Report 📓
bson/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/bson2 2.47μs ± 3.75ns 2.47μs — 2.48μs Report 📓
enc/primpacked/musli_descriptive 463.05ns ± 0.65ns 461.82ns — 464.39ns Report 📓
enc/primpacked/musli_storage 340.03ns ± 0.68ns 338.72ns — 341.37ns Report 📓
enc/primpacked/musli_storage_packed 57.46ns ± 0.06ns 57.35ns — 57.59ns Report 📓
enc/primpacked/musli_wire 331.83ns ± 0.45ns 331.06ns — 332.80ns Report 📓
bson/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/bson2 8.01μs ± 7.51ns 8.00μs — 8.03μs Report 📓
dec/medium_enum/musli_descriptive 1.17μs ± 1.66ns 1.16μs — 1.17μs Report 📓
dec/medium_enum/musli_storage 988.83ns ± 1.67ns 985.83ns — 992.34ns Report 📓
dec/medium_enum/musli_storage_packed 313.01ns ± 0.33ns 312.41ns — 313.71ns Report 📓
dec/medium_enum/musli_wire 963.99ns ± 1.04ns 962.17ns — 966.24ns Report 📓
bson/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/bson2 5.35μs ± 13.13ns 5.33μs — 5.38μs Report 📓
enc/medium_enum/musli_descriptive 946.58ns ± 0.92ns 944.88ns — 948.46ns Report 📓
enc/medium_enum/musli_storage 715.58ns ± 0.94ns 713.81ns — 717.51ns Report 📓
enc/medium_enum/musli_storage_packed 205.16ns ± 0.17ns 204.86ns — 205.53ns Report 📓
enc/medium_enum/musli_wire 715.62ns ± 0.73ns 714.30ns — 717.14ns Report 📓
bson/dec/large
Report 📓
Group Mean Interval Link
dec/large/bson2 1.77ms ± 941.03ns 1.77ms — 1.77ms Report 📓
dec/large/musli_descriptive 311.75μs ± 279.76ns 311.26μs — 312.35μs Report 📓
dec/large/musli_storage 253.46μs ± 262.60ns 252.99μs — 254.02μs Report 📓
dec/large/musli_storage_packed 86.13μs ± 109.72ns 85.94μs — 86.37μs Report 📓
dec/large/musli_wire 293.71μs ± 250.58ns 293.25μs — 294.23μs Report 📓
bson/enc/large
Report 📓
Group Mean Interval Link
enc/large/bson2 964.91μs ± 1.34μs 962.60μs — 967.83μs Report 📓
enc/large/musli_descriptive 206.30μs ± 243.15ns 205.94μs — 206.86μs Report 📓
enc/large/musli_storage 159.45μs ± 189.18ns 159.11μs — 159.85μs Report 📓
enc/large/musli_storage_packed 40.50μs ± 53.73ns 40.42μs — 40.62μs Report 📓
enc/large/musli_wire 168.04μs ± 165.88ns 167.77μs — 168.41μs Report 📓
bson/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/bson2 7.68μs ± 9.38ns 7.66μs — 7.70μs Report 📓
dec/allocated/musli_descriptive 3.12μs ± 3.27ns 3.11μs — 3.12μs Report 📓
dec/allocated/musli_storage 2.91μs ± 3.37ns 2.91μs — 2.92μs Report 📓
dec/allocated/musli_storage_packed 2.49μs ± 2.74ns 2.49μs — 2.50μs Report 📓
dec/allocated/musli_wire 2.99μs ± 2.70ns 2.99μs — 3.00μs Report 📓
bson/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/bson2 2.64μs ± 4.87ns 2.63μs — 2.65μs Report 📓
enc/allocated/musli_descriptive 466.24ns ± 0.56ns 465.24ns — 467.44ns Report 📓
enc/allocated/musli_storage 416.24ns ± 0.39ns 415.54ns — 417.07ns Report 📓
enc/allocated/musli_storage_packed 202.33ns ± 0.23ns 201.92ns — 202.84ns Report 📓
enc/allocated/musli_wire 377.35ns ± 0.50ns 376.37ns — 378.35ns Report 📓

Miniserde

Missing features:

An experimental framework which only supports JSON and a limited number of Rust types.

More:

miniserde/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/miniserde 2.11μs ± 2.13ns 2.11μs — 2.12μs Report 📓
dec/primitives/musli_json 2.80μs ± 2.77ns 2.79μs — 2.80μs Report 📓
dec/primitives/serde_json 2.20μs ± 2.16ns 2.20μs — 2.21μs Report 📓
miniserde/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/miniserde 2.49μs ± 3.15ns 2.48μs — 2.49μs Report 📓
enc/primitives/musli_json 808.11ns ± 1.23ns 805.86ns — 810.68ns Report 📓
enc/primitives/serde_json 958.47ns ± 1.18ns 956.34ns — 960.95ns Report 📓
miniserde/dec/primpacked
Report 📓
Group Mean Interval Link
dec/primpacked/miniserde 2.84μs ± 2.41ns 2.84μs — 2.85μs Report 📓
dec/primpacked/musli_json 3.96μs ± 3.33ns 3.95μs — 3.97μs Report 📓
dec/primpacked/serde_json 2.83μs ± 3.10ns 2.82μs — 2.83μs Report 📓
miniserde/enc/primpacked
Report 📓
Group Mean Interval Link
enc/primpacked/miniserde 2.97μs ± 2.37ns 2.97μs — 2.98μs Report 📓
enc/primpacked/musli_json 932.31ns ± 0.91ns 930.73ns — 934.29ns Report 📓
enc/primpacked/serde_json 1.13μs ± 1.12ns 1.13μs — 1.13μs Report 📓
miniserde/dec/medium_enum
Report 📓
Group Mean Interval Link
dec/medium_enum/miniserde 67.84ns ± 0.11ns 67.65ns — 68.08ns Report 📓
dec/medium_enum/musli_json 54.99ns ± 0.05ns 54.91ns — 55.10ns Report 📓
dec/medium_enum/serde_json 73.91ns ± 0.06ns 73.80ns — 74.04ns Report 📓
miniserde/enc/medium_enum
Report 📓
Group Mean Interval Link
enc/medium_enum/miniserde 97.14ns ± 0.10ns 96.96ns — 97.36ns Report 📓
enc/medium_enum/musli_json 24.80ns ± 0.02ns 24.76ns — 24.85ns Report 📓
enc/medium_enum/serde_json 28.87ns ± 0.02ns 28.84ns — 28.91ns Report 📓
miniserde/dec/large
Report 📓
Group Mean Interval Link
dec/large/miniserde 188.14μs ± 191.41ns 187.79μs — 188.54μs Report 📓
dec/large/musli_json 276.46μs ± 260.96ns 276.02μs — 277.03μs Report 📓
dec/large/serde_json 219.08μs ± 322.68ns 218.55μs — 219.79μs Report 📓
miniserde/enc/large
Report 📓
Group Mean Interval Link
enc/large/miniserde 150.20μs ± 123.58ns 149.99μs — 150.47μs Report 📓
enc/large/musli_json 78.67μs ± 78.10ns 78.54μs — 78.84μs Report 📓
enc/large/serde_json 93.82μs ± 153.01ns 93.55μs — 94.15μs Report 📓
miniserde/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/miniserde 571.01ns ± 0.72ns 569.73ns — 572.52ns Report 📓
dec/allocated/musli_json 543.83ns ± 0.63ns 542.67ns — 545.11ns Report 📓
dec/allocated/serde_json 400.35ns ± 0.34ns 399.73ns — 401.07ns Report 📓
miniserde/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/miniserde 661.84ns ± 0.85ns 660.32ns — 663.63ns Report 📓
enc/allocated/musli_json 135.60ns ± 0.10ns 135.41ns — 135.81ns Report 📓
enc/allocated/serde_json 150.63ns ± 0.19ns 150.31ns — 151.05ns Report 📓

Size comparisons

This is not yet an area which has received much focus, but because people are bound to ask the following section performs a raw size comparison between different formats. Each test suite serializes a collection of values, which have all been randomly populated.

Note so far these are all synthetic examples. Real world data is rarely this random. But hopefully it should give an idea of the extreme ranges.

Full features sizes

These frameworks provide a fair comparison against Müsli on various areas since they support the same set of features in what types of data they can represent.

framework primitives primpacked large allocated medium_enum
musli_descriptive 159.89 ± 1.56 165.80 ± 1.56 49227.10 ± 11024.16 647.93 ± 114.70 53.81 ± 64.94
musli_storage 127.86 ± 1.36 130.88 ± 1.38 40196.50 ± 8751.10 618.86 ± 113.01 43.38 ± 52.97
musli_storage_packed 95.00 ± 0.00 96.00 ± 0.00 49343.70 ± 11697.30 711.89 ± 117.76 59.40 ± 53.98
musli_wire 143.30 ± 1.77 148.43 ± 1.87 45860.00 ± 10213.50 634.69 ± 114.75 49.38 ± 59.50
postcard 110.85 ± 1.41 110.81 ± 1.34 34448.30 ± 7216.32 605.86 ± 113.01 39.62 ± 48.10
serde_bincode 94.96 ± 0.21 96.00 ± 0.00 32444.10 ± 6612.33 710.89 ± 117.76 42.39 ± 47.27
serde_bitcode 104.92 ± 0.38 105.00 ± 0.00 29918.20 ± 6055.10 600.54 ± 112.02 38.76 ± 46.90
serde_rmp 113.82 ± 0.73 119.88 ± 1.48 38929.60 ± 8350.45 612.41 ± 113.80 50.97 ± 50.74

Text-based formats sizes

These are text-based formats, which support the full feature set of this test suite.

framework primitives primpacked large allocated medium_enum
musli_json3 435.41 ± 2.37 452.29 ± 2.99 102385.20 ± 24215.50 935.66 ± 118.61 109.79 ± 155.12
serde_json3 435.41 ± 2.37 452.29 ± 2.99 102095.30 ± 24197.18 933.66 ± 118.61 107.17 ± 155.61

Fewer features sizes

Missing features:

This is a suite where support for 128-bit integers and maps are disabled. Usually because the underlying framework lacks support for them.

framework primitives primpacked large allocated medium_enum
musli_descriptive 116.36 ± 1.46 122.33 ± 1.46 30994.00 ± 9328.95 488.45 ± 97.86 48.29 ± 54.39
musli_storage 88.25 ± 1.28 91.33 ± 1.23 24396.80 ± 7365.25 467.22 ± 96.77 38.34 ± 43.91
musli_storage_packed 63.00 ± 0.00 64.00 ± 0.00 30538.90 ± 9851.19 542.74 ± 100.11 55.32 ± 47.93
musli_wire 101.86 ± 1.75 106.83 ± 1.77 28513.80 ± 8662.56 477.64 ± 98.04 44.07 ± 49.89
serde_cbor4 212.69 ± 0.53 221.17 ± 0.85 34759.30 ± 9429.15 566.69 ± 97.29 65.78 ± 80.46

Speedy sizes

Missing features:

This is a test suite for speedy features.

framework primitives primpacked large allocated medium_enum
musli_descriptive 147.31 ± 1.51 153.36 ± 1.46 41718.30 ± 15493.73 620.89 ± 119.64 52.25 ± 61.70
musli_storage 117.32 ± 1.32 120.35 ± 1.27 34094.60 ± 12489.61 592.46 ± 118.15 42.07 ± 50.34
musli_storage_packed 87.00 ± 0.00 88.00 ± 0.00 41814.00 ± 16869.40 678.73 ± 122.85 58.41 ± 52.30
musli_wire 131.81 ± 1.82 136.96 ± 1.67 38859.80 ± 14496.84 608.63 ± 119.78 47.90 ± 56.55
speedy 87.00 ± 0.00 88.00 ± 0.00 27314.40 ± 9463.76 614.49 ± 119.95 39.91 ± 44.04

Müsli vs rkyv sizes

Missing features:

Comparison between musli-zerocopy and rkyv.

Note that musli-zerocopy only supports the primitives benchmark.

framework primitives primpacked large allocated medium_enum
musli_zerocopy 96.00 ± 0.00 80.00 ± 0.00 - - -
rkyv3 96.00 ± 0.00 80.00 ± 0.00 12950.40 ± 3223.55 571.88 ± 81.01 148.64 ± 39.42

Müsli vs zerocopy sizes

Compares musli-zerocopy with zerocopy.

Note that zerocopy only supports packed primitives, so we’re only comparing with that suite.

framework primitives primpacked large allocated medium_enum
musli_zerocopy 112.00 ± 0.00 96.00 ± 0.00 - - -
zerocopy - 96.00 ± 0.00 - - -

Bitcode derive sizes

Missing features:

Uses a custom derive-based framework which does not support everything Müsli and serde does.

framework primitives primpacked large allocated medium_enum
derive_bitcode 104.92 ± 0.38 106.00 ± 0.00 29916.20 ± 6055.10 593.80 ± 109.31 38.68 ± 46.87
musli_descriptive 159.89 ± 1.56 165.80 ± 1.56 49227.10 ± 11024.16 639.17 ± 111.51 53.74 ± 64.92
musli_storage 127.86 ± 1.36 130.88 ± 1.38 40196.50 ± 8751.10 611.30 ± 110.04 43.30 ± 52.94
musli_storage_packed 95.00 ± 0.00 96.00 ± 0.00 49343.70 ± 11697.30 698.43 ± 113.05 59.32 ± 53.94
musli_wire 143.30 ± 1.77 148.43 ± 1.87 45860.00 ± 10213.50 627.14 ± 111.86 49.31 ± 59.47

BSON sizes

Missing features:

Specific comparison to BSON, because the format is limited in capabilities.

framework primitives primpacked large allocated medium_enum
bson 240.95 ± 0.22 289.00 ± 0.00 88697.60 ± 27440.34 759.57 ± 104.65 117.73 ± 114.42
musli_descriptive 115.35 ± 1.30 121.34 ± 1.28 47190.80 ± 14363.99 591.31 ± 103.15 58.34 ± 59.96
musli_storage 87.24 ± 1.05 90.34 ± 0.99 37789.30 ± 11415.77 570.37 ± 101.73 44.05 ± 46.64
musli_storage_packed 63.00 ± 0.00 64.00 ± 0.00 48084.20 ± 14716.66 659.34 ± 105.75 65.01 ± 50.73
musli_wire 100.85 ± 1.60 105.84 ± 1.57 43705.40 ± 13284.04 580.32 ± 103.13 52.30 ± 54.38

Miniserde sizes

Missing features:

An experimental framework which only supports JSON and a limited number of Rust types.

framework primitives primpacked large allocated medium_enum
miniserde 319.30 ± 2.27 355.35 ± 2.46 21864.00 ± 5570.16 97.33 ± 30.98 7.00 ± 0.00
musli_json3 310.67 ± 2.31 346.68 ± 2.53 21287.60 ± 5418.47 97.33 ± 30.98 7.00 ± 0.00
serde_json3 310.67 ± 2.31 346.68 ± 2.53 21287.60 ± 5418.47 97.33 ± 30.98 7.00 ± 0.00
  1. musli-value is a heap-allocated, in-memory format. Deserialization is expected to be as fast as a dynamic in-memory structure can be traversed, but serialization requires a lot of allocations. It is only included for reference.  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

  2. BSON does not support serializing directly in-place without patches. As a result it is expected to be much slower.  2 3 4 5 6 7 8 9 10

  3. These formats do not support a wide range of Rust types. Exact level of support varies. But from a size perspective it makes size comparisons either unfair or simply an esoteric exercise since they can (or cannot) make stricter assumptions as a result.  2 3 4 5

  4. Lacks 128-bit support.