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.

System Information

CPU: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz 4743MHz

Memory: 67317MB

Reports

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/bincode11 134.59ns ± 0.11ns 134.40ns — 134.83ns Report 📓
dec/primitives/bincode_derive 161.17ns ± 0.19ns 160.84ns — 161.57ns Report 📓
dec/primitives/bincode_serde2 200.44ns ± 0.20ns 200.10ns — 200.87ns Report 📓
dec/primitives/musli_descriptive 1.18μs ± 0.78ns 1.17μs — 1.18μs Report 📓
dec/primitives/musli_packed 22.14ns ± 0.02ns 22.10ns — 22.18ns Report 📓
dec/primitives/musli_storage 858.94ns ± 1.17ns 856.83ns — 861.41ns Report 📓
dec/primitives/musli_value3 397.21ns ± 0.43ns 396.43ns — 398.11ns Report 📓
dec/primitives/musli_wire 865.50ns ± 0.82ns 864.14ns — 867.32ns Report 📓
dec/primitives/postcard 267.33ns ± 0.18ns 267.00ns — 267.71ns Report 📓
dec/primitives/serde_bincode 38.60ns ± 0.25ns 38.25ns — 38.96ns Report 📓
dec/primitives/serde_bitcode 1.26μs ± 2.01ns 1.25μs — 1.26μs Report 📓
dec/primitives/serde_rmp 321.46ns ± 0.30ns 320.92ns — 322.09ns Report 📓
full/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/bincode11 106.21ns ± 0.07ns 106.08ns — 106.36ns Report 📓
enc/primitives/bincode_derive 118.07ns ± 0.48ns 117.33ns — 119.15ns Report 📓
enc/primitives/bincode_serde2 120.27ns ± 0.46ns 119.54ns — 121.32ns Report 📓
enc/primitives/musli_descriptive 963.09ns ± 0.96ns 961.43ns — 965.17ns Report 📓
enc/primitives/musli_packed 19.93ns ± 0.02ns 19.89ns — 19.97ns Report 📓
enc/primitives/musli_storage 567.08ns ± 0.64ns 565.92ns — 568.43ns Report 📓
enc/primitives/musli_value3 1.15μs ± 0.67ns 1.15μs — 1.16μs Report 📓
enc/primitives/musli_wire 834.98ns ± 1.54ns 832.47ns — 838.39ns Report 📓
enc/primitives/postcard 432.13ns ± 0.50ns 431.26ns — 433.21ns Report 📓
enc/primitives/serde_bincode 31.23ns ± 0.34ns 30.74ns — 31.72ns Report 📓
enc/primitives/serde_bitcode 3.69μs ± 4.18ns 3.68μs — 3.70μs Report 📓
enc/primitives/serde_rmp 250.00ns ± 0.30ns 249.48ns — 250.63ns Report 📓
full/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/bincode11 103.85ns ± 0.08ns 103.71ns — 104.02ns Report 📓
dec/packed/bincode_derive 131.76ns ± 0.12ns 131.56ns — 132.02ns Report 📓
dec/packed/bincode_serde2 166.22ns ± 0.15ns 165.95ns — 166.54ns Report 📓
dec/packed/musli_descriptive 1.18μs ± 0.90ns 1.18μs — 1.18μs Report 📓
dec/packed/musli_packed 26.12ns ± 0.02ns 26.08ns — 26.16ns Report 📓
dec/packed/musli_storage 894.99ns ± 0.93ns 893.37ns — 896.99ns Report 📓
dec/packed/musli_value3 401.28ns ± 0.45ns 400.52ns — 402.24ns Report 📓
dec/packed/musli_wire 893.17ns ± 0.76ns 891.73ns — 894.72ns Report 📓
dec/packed/postcard 267.07ns ± 0.31ns 266.53ns — 267.73ns Report 📓
dec/packed/serde_bitcode 1.50μs ± 1.50ns 1.49μs — 1.50μs Report 📓
dec/packed/serde_rmp 396.13ns ± 0.30ns 395.57ns — 396.76ns Report 📓
full/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/bincode11 122.62ns ± 0.12ns 122.43ns — 122.89ns Report 📓
enc/packed/bincode_derive 111.89ns ± 0.41ns 111.22ns — 112.82ns Report 📓
enc/packed/bincode_serde2 119.57ns ± 0.49ns 118.75ns — 120.65ns Report 📓
enc/packed/musli_descriptive 923.26ns ± 0.55ns 922.26ns — 924.41ns Report 📓
enc/packed/musli_packed 21.57ns ± 0.02ns 21.53ns — 21.61ns Report 📓
enc/packed/musli_storage 540.40ns ± 0.80ns 539.03ns — 542.13ns Report 📓
enc/packed/musli_value3 1.59μs ± 1.54ns 1.59μs — 1.59μs Report 📓
enc/packed/musli_wire 585.47ns ± 0.47ns 584.62ns — 586.44ns Report 📓
enc/packed/postcard 431.79ns ± 0.39ns 431.07ns — 432.60ns Report 📓
enc/packed/serde_bitcode 4.55μs ± 5.98ns 4.54μs — 4.57μs Report 📓
enc/packed/serde_rmp 318.48ns ± 0.46ns 317.64ns — 319.45ns Report 📓
full/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/bincode11 693.23ns ± 0.67ns 692.08ns — 694.67ns Report 📓
dec/full_enum/bincode_derive 1.02μs ± 1.34ns 1.01μs — 1.02μs Report 📓
dec/full_enum/bincode_serde2 1.10μs ± 1.62ns 1.10μs — 1.10μs Report 📓
dec/full_enum/musli_descriptive 2.49μs ± 2.40ns 2.49μs — 2.50μs Report 📓
dec/full_enum/musli_packed 513.46ns ± 0.86ns 511.96ns — 515.32ns Report 📓
dec/full_enum/musli_storage 1.85μs ± 2.13ns 1.85μs — 1.86μs Report 📓
dec/full_enum/musli_value3 981.31ns ± 1.13ns 979.27ns — 983.67ns Report 📓
dec/full_enum/musli_wire 1.87μs ± 1.79ns 1.87μs — 1.88μs Report 📓
dec/full_enum/postcard 939.97ns ± 0.84ns 938.43ns — 941.70ns Report 📓
dec/full_enum/serde_bitcode 9.14μs ± 16.77ns 9.11μs — 9.18μs Report 📓
dec/full_enum/serde_rmp 2.13μs ± 3.50ns 2.12μs — 2.14μs Report 📓
full/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/bincode11 304.24ns ± 0.32ns 303.66ns — 304.92ns Report 📓
enc/full_enum/bincode_derive 381.24ns ± 8.52ns 367.36ns — 400.21ns Report 📓
enc/full_enum/bincode_serde2 389.36ns ± 9.13ns 374.44ns — 409.83ns Report 📓
enc/full_enum/musli_descriptive 1.40μs ± 1.82ns 1.40μs — 1.41μs Report 📓
enc/full_enum/musli_packed 134.97ns ± 0.14ns 134.71ns — 135.27ns Report 📓
enc/full_enum/musli_storage 914.27ns ± 0.93ns 912.65ns — 916.30ns Report 📓
enc/full_enum/musli_value3 3.44μs ± 3.60ns 3.43μs — 3.44μs Report 📓
enc/full_enum/musli_wire 1.39μs ± 1.83ns 1.38μs — 1.39μs Report 📓
enc/full_enum/postcard 893.97ns ± 0.90ns 892.30ns — 895.82ns Report 📓
enc/full_enum/serde_bitcode 12.25μs ± 14.07ns 12.22μs — 12.28μs Report 📓
enc/full_enum/serde_rmp 648.69ns ± 0.57ns 647.62ns — 649.87ns Report 📓
full/dec/large
Report 📓
Group Mean Interval Link
dec/large/bincode11 52.48μs ± 46.38ns 52.40μs — 52.58μs Report 📓
dec/large/bincode_derive 56.57μs ± 61.69ns 56.47μs — 56.71μs Report 📓
dec/large/bincode_serde2 64.47μs ± 49.99ns 64.37μs — 64.57μs Report 📓
dec/large/musli_descriptive 194.68μs ± 252.48ns 194.25μs — 195.23μs Report 📓
dec/large/musli_packed 36.88μs ± 18.67ns 36.85μs — 36.92μs Report 📓
dec/large/musli_storage 146.17μs ± 176.79ns 145.87μs — 146.56μs Report 📓
dec/large/musli_value3 72.79μs ± 101.28ns 72.63μs — 73.02μs Report 📓
dec/large/musli_wire 172.44μs ± 197.48ns 172.14μs — 172.89μs Report 📓
dec/large/postcard 71.25μs ± 69.73ns 71.14μs — 71.41μs Report 📓
dec/large/serde_bincode 13.45μs ± 20.38ns 13.42μs — 13.47μs Report 📓
dec/large/serde_bitcode 81.76μs ± 92.60ns 81.59μs — 81.95μs Report 📓
dec/large/serde_rmp 120.33μs ± 116.69ns 120.12μs — 120.58μs Report 📓
full/enc/large
Report 📓
Group Mean Interval Link
enc/large/bincode11 23.38μs ± 21.66ns 23.34μs — 23.42μs Report 📓
enc/large/bincode_derive 18.95μs ± 69.88ns 18.84μs — 19.11μs Report 📓
enc/large/bincode_serde2 19.91μs ± 87.60ns 19.77μs — 20.10μs Report 📓
enc/large/musli_descriptive 102.64μs ± 101.57ns 102.47μs — 102.87μs Report 📓
enc/large/musli_packed 10.38μs ± 6.50ns 10.37μs — 10.40μs Report 📓
enc/large/musli_storage 68.19μs ± 60.77ns 68.08μs — 68.32μs Report 📓
enc/large/musli_value3 304.98μs ± 556.16ns 304.07μs — 306.22μs Report 📓
enc/large/musli_wire 105.11μs ± 69.98ns 104.98μs — 105.26μs Report 📓
enc/large/postcard 72.14μs ± 86.12ns 71.99μs — 72.32μs Report 📓
enc/large/serde_bincode 4.88μs ± 14.98ns 4.86μs — 4.90μs Report 📓
enc/large/serde_bitcode 94.91μs ± 90.42ns 94.74μs — 95.09μs Report 📓
enc/large/serde_rmp 62.53μs ± 75.76ns 62.39μs — 62.69μs Report 📓
full/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/bincode11 3.04μs ± 2.29ns 3.04μs — 3.05μs Report 📓
dec/allocated/bincode_derive 3.75μs ± 5.65ns 3.74μs — 3.77μs Report 📓
dec/allocated/bincode_serde2 4.12μs ± 4.58ns 4.11μs — 4.13μs Report 📓
dec/allocated/musli_descriptive 3.39μs ± 4.27ns 3.39μs — 3.40μs Report 📓
dec/allocated/musli_packed 2.01μs ± 1.97ns 2.00μs — 2.01μs Report 📓
dec/allocated/musli_storage 2.90μs ± 3.02ns 2.89μs — 2.90μs Report 📓
dec/allocated/musli_value3 1.83μs ± 1.66ns 1.82μs — 1.83μs Report 📓
dec/allocated/musli_wire 3.11μs ± 3.05ns 3.10μs — 3.11μs Report 📓
dec/allocated/postcard 3.21μs ± 2.58ns 3.21μs — 3.22μs Report 📓
dec/allocated/serde_bincode 899.32ns ± 0.77ns 898.22ns — 900.42ns Report 📓
dec/allocated/serde_bitcode 5.76μs ± 8.08ns 5.74μs — 5.77μs Report 📓
dec/allocated/serde_rmp 4.02μs ± 6.82ns 4.01μs — 4.03μs Report 📓
full/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/bincode11 385.40ns ± 0.30ns 384.85ns — 386.02ns Report 📓
enc/allocated/bincode_derive 437.42ns ± 1.68ns 434.68ns — 441.13ns Report 📓
enc/allocated/bincode_serde2 448.11ns ± 1.96ns 445.11ns — 452.59ns Report 📓
enc/allocated/musli_descriptive 589.85ns ± 0.69ns 588.61ns — 591.32ns Report 📓
enc/allocated/musli_packed 177.91ns ± 0.19ns 177.55ns — 178.31ns Report 📓
enc/allocated/musli_storage 526.65ns ± 0.79ns 525.22ns — 528.31ns Report 📓
enc/allocated/musli_value3 2.58μs ± 3.52ns 2.58μs — 2.59μs Report 📓
enc/allocated/musli_wire 976.63ns ± 1.20ns 974.50ns — 979.18ns Report 📓
enc/allocated/postcard 1.21μs ± 1.72ns 1.21μs — 1.22μs Report 📓
enc/allocated/serde_bincode 96.63ns ± 0.38ns 96.09ns — 97.17ns Report 📓
enc/allocated/serde_bitcode 7.68μs ± 8.62ns 7.67μs — 7.70μs Report 📓
enc/allocated/serde_rmp 739.90ns ± 0.73ns 738.69ns — 741.52ns Report 📓
full/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/bincode11 532.48ns ± 0.51ns 531.58ns — 533.57ns Report 📓
dec/mesh/bincode_serde2 409.96ns ± 0.45ns 409.17ns — 410.93ns Report 📓
dec/mesh/musli_descriptive 8.13μs ± 11.35ns 8.11μs — 8.16μs Report 📓
dec/mesh/musli_packed 86.49ns ± 0.07ns 86.36ns — 86.64ns Report 📓
dec/mesh/musli_storage 4.98μs ± 5.77ns 4.97μs — 4.99μs Report 📓
dec/mesh/musli_value3 2.26μs ± 2.46ns 2.26μs — 2.27μs Report 📓
dec/mesh/musli_wire 5.70μs ± 6.24ns 5.69μs — 5.71μs Report 📓
dec/mesh/postcard 408.36ns ± 0.38ns 407.69ns — 409.15ns Report 📓
dec/mesh/serde_bincode 505.72ns ± 4.05ns 499.99ns — 511.44ns Report 📓
dec/mesh/serde_bitcode 3.57μs ± 34.68ns 3.50μs — 3.64μs Report 📓
dec/mesh/serde_rmp 2.88μs ± 2.04ns 2.88μs — 2.89μs Report 📓
full/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/bincode11 700.16ns ± 0.48ns 699.27ns — 701.15ns Report 📓
enc/mesh/bincode_serde2 225.92ns ± 0.92ns 224.53ns — 228.03ns Report 📓
enc/mesh/musli_descriptive 3.43μs ± 3.28ns 3.43μs — 3.44μs Report 📓
enc/mesh/musli_packed 33.67ns ± 0.03ns 33.62ns — 33.73ns Report 📓
enc/mesh/musli_storage 2.55μs ± 2.82ns 2.55μs — 2.56μs Report 📓
enc/mesh/musli_value3 17.44μs ± 25.46ns 17.40μs — 17.50μs Report 📓
enc/mesh/musli_wire 4.72μs ± 4.05ns 4.71μs — 4.73μs Report 📓
enc/mesh/postcard 385.83ns ± 0.45ns 385.05ns — 386.79ns Report 📓
enc/mesh/serde_bincode 309.01ns ± 0.16ns 308.79ns — 309.23ns Report 📓
enc/mesh/serde_bitcode 4.72μs ± 5.57ns 4.71μs — 4.73μs Report 📓
enc/mesh/serde_rmp 1.59μs ± 1.66ns 1.58μs — 1.59μs 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 3.61μs ± 3.00ns 3.61μs — 3.62μs Report 📓
dec/primitives/serde_json 4.45μs ± 4.12ns 4.44μs — 4.45μs Report 📓
text/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_json 1.39μs ± 1.31ns 1.38μs — 1.39μs Report 📓
enc/primitives/serde_json 1.31μs ± 1.11ns 1.30μs — 1.31μs Report 📓
text/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/musli_json 4.19μs ± 4.35ns 4.18μs — 4.20μs Report 📓
dec/packed/serde_json 4.59μs ± 4.04ns 4.58μs — 4.59μs Report 📓
text/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/musli_json 1.20μs ± 0.69ns 1.19μs — 1.20μs Report 📓
enc/packed/serde_json 1.37μs ± 1.46ns 1.37μs — 1.37μs Report 📓
text/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/musli_json 8.19μs ± 23.00ns 8.15μs — 8.24μs Report 📓
dec/full_enum/serde_json 7.67μs ± 5.78ns 7.66μs — 7.68μs Report 📓
text/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/musli_json 2.61μs ± 2.46ns 2.60μs — 2.61μs Report 📓
enc/full_enum/serde_json 2.35μs ± 2.43ns 2.34μs — 2.35μs Report 📓
text/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_json 612.88μs ± 829.36ns 611.42μs — 614.65μs Report 📓
dec/large/serde_json 566.20μs ± 525.69ns 565.36μs — 567.38μs Report 📓
text/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_json 196.03μs ± 182.78ns 195.70μs — 196.41μs Report 📓
enc/large/serde_json 184.23μs ± 135.58ns 184.01μs — 184.53μs Report 📓
text/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_json 9.82μs ± 18.88ns 9.79μs — 9.86μs Report 📓
dec/allocated/serde_json 7.84μs ± 14.13ns 7.81μs — 7.87μs Report 📓
text/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_json 2.47μs ± 2.29ns 2.46μs — 2.47μs Report 📓
enc/allocated/serde_json 2.46μs ± 2.14ns 2.46μs — 2.47μs Report 📓
text/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/musli_json 29.67μs ± 24.10ns 29.63μs — 29.73μs Report 📓
dec/mesh/serde_json 24.78μs ± 20.46ns 24.74μs — 24.82μs Report 📓
text/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/musli_json 12.68μs ± 12.51ns 12.65μs — 12.70μs Report 📓
enc/mesh/serde_json 13.74μs ± 13.65ns 13.72μs — 13.77μ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 891.60ns ± 1.05ns 889.67ns — 893.79ns Report 📓
dec/primitives/musli_packed 15.12ns ± 0.01ns 15.10ns — 15.14ns Report 📓
dec/primitives/musli_storage 629.01ns ± 0.62ns 627.87ns — 630.28ns Report 📓
dec/primitives/musli_value3 341.99ns ± 0.47ns 341.17ns — 342.98ns Report 📓
dec/primitives/musli_wire 610.08ns ± 0.58ns 608.93ns — 611.20ns Report 📓
dec/primitives/serde_cbor 1.65μs ± 1.97ns 1.65μs — 1.66μs Report 📓
fewer/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_descriptive 328.41ns ± 0.52ns 327.62ns — 329.58ns Report 📓
enc/primitives/musli_packed 17.87ns ± 0.02ns 17.83ns — 17.91ns Report 📓
enc/primitives/musli_storage 256.06ns ± 0.28ns 255.58ns — 256.66ns Report 📓
enc/primitives/musli_value3 1.13μs ± 1.30ns 1.13μs — 1.13μs Report 📓
enc/primitives/musli_wire 495.87ns ± 1.02ns 493.91ns — 497.89ns Report 📓
enc/primitives/serde_cbor 435.00ns ± 0.25ns 434.52ns — 435.52ns Report 📓
fewer/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/musli_descriptive 935.47ns ± 1.06ns 933.55ns — 937.69ns Report 📓
dec/packed/musli_packed 22.15ns ± 0.02ns 22.12ns — 22.18ns Report 📓
dec/packed/musli_storage 642.98ns ± 0.78ns 641.55ns — 644.61ns Report 📓
dec/packed/musli_value3 347.32ns ± 0.34ns 346.72ns — 348.04ns Report 📓
dec/packed/musli_wire 614.45ns ± 0.34ns 613.85ns — 615.18ns Report 📓
dec/packed/serde_cbor 1.82μs ± 2.19ns 1.82μs — 1.83μs Report 📓
fewer/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/musli_descriptive 350.50ns ± 0.39ns 349.82ns — 351.35ns Report 📓
enc/packed/musli_packed 19.52ns ± 0.02ns 19.48ns — 19.57ns Report 📓
enc/packed/musli_storage 261.81ns ± 0.28ns 261.32ns — 262.42ns Report 📓
enc/packed/musli_value3 1.29μs ± 1.47ns 1.29μs — 1.29μs Report 📓
enc/packed/musli_wire 321.31ns ± 0.37ns 320.73ns — 322.15ns Report 📓
enc/packed/serde_cbor 492.77ns ± 0.33ns 492.16ns — 493.46ns Report 📓
fewer/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/musli_descriptive 2.11μs ± 2.34ns 2.11μs — 2.12μs Report 📓
dec/full_enum/musli_packed 453.07ns ± 0.63ns 451.96ns — 454.42ns Report 📓
dec/full_enum/musli_storage 1.46μs ± 1.38ns 1.46μs — 1.46μs Report 📓
dec/full_enum/musli_value3 934.73ns ± 1.03ns 932.94ns — 936.97ns Report 📓
dec/full_enum/musli_wire 1.61μs ± 1.89ns 1.61μs — 1.61μs Report 📓
dec/full_enum/serde_cbor 4.44μs ± 3.65ns 4.44μs — 4.45μs Report 📓
fewer/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/musli_descriptive 836.81ns ± 1.32ns 834.43ns — 839.58ns Report 📓
enc/full_enum/musli_packed 136.38ns ± 0.21ns 136.01ns — 136.83ns Report 📓
enc/full_enum/musli_storage 608.61ns ± 0.52ns 607.72ns — 609.74ns Report 📓
enc/full_enum/musli_value3 3.25μs ± 2.73ns 3.24μs — 3.25μs Report 📓
enc/full_enum/musli_wire 1.09μs ± 1.47ns 1.08μs — 1.09μs Report 📓
enc/full_enum/serde_cbor 1.01μs ± 1.02ns 1.01μs — 1.01μs Report 📓
fewer/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_descriptive 140.04μs ± 113.42ns 139.86μs — 140.30μs Report 📓
dec/large/musli_packed 14.40μs ± 13.44ns 14.38μs — 14.43μs Report 📓
dec/large/musli_storage 100.36μs ± 68.80ns 100.24μs — 100.51μs Report 📓
dec/large/musli_value3 52.95μs ± 59.68ns 52.84μs — 53.07μs Report 📓
dec/large/musli_wire 119.76μs ± 161.82ns 119.47μs — 120.10μs Report 📓
dec/large/serde_cbor 257.70μs ± 273.26ns 257.23μs — 258.29μs Report 📓
fewer/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_descriptive 52.55μs ± 58.17ns 52.44μs — 52.67μs Report 📓
enc/large/musli_packed 5.71μs ± 4.45ns 5.70μs — 5.72μs Report 📓
enc/large/musli_storage 40.73μs ± 40.19ns 40.66μs — 40.81μs Report 📓
enc/large/musli_value3 239.62μs ± 254.13ns 239.19μs — 240.17μs Report 📓
enc/large/musli_wire 74.71μs ± 93.54ns 74.55μs — 74.92μs Report 📓
enc/large/serde_cbor 67.74μs ± 51.94ns 67.65μs — 67.85μs Report 📓
fewer/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_descriptive 2.35μs ± 1.81ns 2.35μs — 2.36μs Report 📓
dec/allocated/musli_packed 1.56μs ± 2.41ns 1.56μs — 1.57μs Report 📓
dec/allocated/musli_storage 2.12μs ± 2.36ns 2.11μs — 2.12μs Report 📓
dec/allocated/musli_value3 1.30μs ± 1.45ns 1.30μs — 1.30μs Report 📓
dec/allocated/musli_wire 2.19μs ± 2.11ns 2.19μs — 2.19μs Report 📓
dec/allocated/serde_cbor 4.04μs ± 4.54ns 4.03μs — 4.05μs Report 📓
fewer/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_descriptive 408.33ns ± 0.41ns 407.56ns — 409.19ns Report 📓
enc/allocated/musli_packed 132.83ns ± 0.09ns 132.65ns — 133.02ns Report 📓
enc/allocated/musli_storage 343.44ns ± 0.34ns 342.83ns — 344.17ns Report 📓
enc/allocated/musli_value3 2.02μs ± 1.90ns 2.02μs — 2.02μs Report 📓
enc/allocated/musli_wire 385.54ns ± 0.52ns 384.69ns — 386.68ns Report 📓
enc/allocated/serde_cbor 624.06ns ± 0.65ns 622.87ns — 625.43ns Report 📓
fewer/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/musli_descriptive 8.21μs ± 9.04ns 8.19μs — 8.23μs Report 📓
dec/mesh/musli_packed 85.05ns ± 0.07ns 84.91ns — 85.21ns Report 📓
dec/mesh/musli_storage 4.98μs ± 5.40ns 4.97μs — 4.99μs Report 📓
dec/mesh/musli_value3 2.29μs ± 2.64ns 2.28μs — 2.29μs Report 📓
dec/mesh/musli_wire 5.68μs ± 3.51ns 5.67μs — 5.68μs Report 📓
dec/mesh/serde_cbor 12.78μs ± 9.95ns 12.76μs — 12.80μs Report 📓
fewer/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/musli_descriptive 3.35μs ± 3.60ns 3.35μs — 3.36μs Report 📓
enc/mesh/musli_packed 33.77ns ± 0.03ns 33.72ns — 33.83ns Report 📓
enc/mesh/musli_storage 2.54μs ± 2.37ns 2.53μs — 2.54μs Report 📓
enc/mesh/musli_value3 17.15μs ± 14.37ns 17.12μs — 17.18μs Report 📓
enc/mesh/musli_wire 4.73μs ± 5.14ns 4.72μs — 4.74μs Report 📓
enc/mesh/serde_cbor 6.51μs ± 8.32ns 6.50μs — 6.53μs 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 1.03μs ± 1.05ns 1.03μs — 1.03μs Report 📓
dec/primitives/musli_packed 22.58ns ± 0.02ns 22.55ns — 22.61ns Report 📓
dec/primitives/musli_storage 780.84ns ± 0.77ns 779.56ns — 782.55ns Report 📓
dec/primitives/musli_value3 370.94ns ± 0.37ns 370.31ns — 371.73ns Report 📓
dec/primitives/musli_wire 806.52ns ± 0.69ns 805.27ns — 807.95ns Report 📓
dec/primitives/speedy 19.23ns ± 0.01ns 19.21ns — 19.26ns Report 📓
speedy/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/musli_descriptive 893.18ns ± 1.17ns 891.07ns — 895.63ns Report 📓
enc/primitives/musli_packed 18.75ns ± 0.02ns 18.72ns — 18.79ns Report 📓
enc/primitives/musli_storage 541.66ns ± 0.67ns 540.43ns — 543.05ns Report 📓
enc/primitives/musli_value3 1.20μs ± 1.06ns 1.20μs — 1.20μs Report 📓
enc/primitives/musli_wire 707.51ns ± 1.35ns 705.51ns — 710.60ns Report 📓
enc/primitives/speedy 15.93ns ± 0.01ns 15.91ns — 15.96ns Report 📓
speedy/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/musli_descriptive 1.06μs ± 0.83ns 1.06μs — 1.06μs Report 📓
dec/packed/musli_packed 23.47ns ± 0.02ns 23.45ns — 23.51ns Report 📓
dec/packed/musli_storage 835.03ns ± 1.06ns 833.18ns — 837.29ns Report 📓
dec/packed/musli_value3 366.06ns ± 0.27ns 365.58ns — 366.64ns Report 📓
dec/packed/musli_wire 850.00ns ± 0.76ns 848.63ns — 851.59ns Report 📓
dec/packed/speedy 20.71ns ± 0.02ns 20.68ns — 20.76ns Report 📓
speedy/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/musli_descriptive 907.64ns ± 0.98ns 905.93ns — 909.76ns Report 📓
enc/packed/musli_packed 20.35ns ± 0.01ns 20.32ns — 20.37ns Report 📓
enc/packed/musli_storage 531.18ns ± 0.54ns 530.26ns — 532.36ns Report 📓
enc/packed/musli_value3 1.36μs ± 1.28ns 1.36μs — 1.36μs Report 📓
enc/packed/musli_wire 582.63ns ± 0.51ns 581.67ns — 583.68ns Report 📓
enc/packed/speedy 16.32ns ± 0.02ns 16.29ns — 16.36ns Report 📓
speedy/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/musli_descriptive 2.58μs ± 2.29ns 2.58μs — 2.58μs Report 📓
dec/full_enum/musli_packed 744.33ns ± 0.93ns 742.52ns — 746.17ns Report 📓
dec/full_enum/musli_storage 1.95μs ± 2.39ns 1.95μs — 1.96μs Report 📓
dec/full_enum/musli_value3 1.02μs ± 0.78ns 1.02μs — 1.02μs Report 📓
dec/full_enum/musli_wire 2.12μs ± 1.84ns 2.11μs — 2.12μs Report 📓
dec/full_enum/speedy 759.05ns ± 0.94ns 757.36ns — 761.03ns Report 📓
speedy/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/musli_descriptive 1.43μs ± 2.21ns 1.42μs — 1.43μs Report 📓
enc/full_enum/musli_packed 140.26ns ± 0.14ns 140.01ns — 140.55ns Report 📓
enc/full_enum/musli_storage 916.31ns ± 0.96ns 914.66ns — 918.40ns Report 📓
enc/full_enum/musli_value3 3.59μs ± 3.46ns 3.58μs — 3.60μs Report 📓
enc/full_enum/musli_wire 1.28μs ± 1.25ns 1.28μs — 1.29μs Report 📓
enc/full_enum/speedy 309.94ns ± 0.28ns 309.40ns — 310.50ns Report 📓
speedy/dec/large
Report 📓
Group Mean Interval Link
dec/large/musli_descriptive 199.44μs ± 192.06ns 199.11μs — 199.86μs Report 📓
dec/large/musli_packed 41.02μs ± 30.79ns 40.96μs — 41.08μs Report 📓
dec/large/musli_storage 158.93μs ± 290.34ns 158.47μs — 159.58μs Report 📓
dec/large/musli_value3 77.52μs ± 69.12ns 77.39μs — 77.66μs Report 📓
dec/large/musli_wire 180.74μs ± 144.75ns 180.48μs — 181.05μs Report 📓
dec/large/speedy 43.91μs ± 49.51ns 43.82μs — 44.01μs Report 📓
speedy/enc/large
Report 📓
Group Mean Interval Link
enc/large/musli_descriptive 116.83μs ± 82.41ns 116.69μs — 117.01μs Report 📓
enc/large/musli_packed 10.04μs ± 10.61ns 10.02μs — 10.07μs Report 📓
enc/large/musli_storage 76.68μs ± 84.30ns 76.53μs — 76.86μs Report 📓
enc/large/musli_value3 297.06μs ± 365.55ns 296.44μs — 297.85μs Report 📓
enc/large/musli_wire 105.44μs ± 85.98ns 105.30μs — 105.63μs Report 📓
enc/large/speedy 10.19μs ± 13.99ns 10.17μs — 10.22μs Report 📓
speedy/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/musli_descriptive 4.18μs ± 2.89ns 4.18μs — 4.19μs Report 📓
dec/allocated/musli_packed 2.55μs ± 2.81ns 2.54μs — 2.55μs Report 📓
dec/allocated/musli_storage 3.55μs ± 4.84ns 3.54μs — 3.56μs Report 📓
dec/allocated/musli_value3 1.88μs ± 1.58ns 1.88μs — 1.88μs Report 📓
dec/allocated/musli_wire 3.44μs ± 3.76ns 3.43μs — 3.45μs Report 📓
dec/allocated/speedy 3.40μs ± 2.75ns 3.39μs — 3.40μs Report 📓
speedy/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/musli_descriptive 635.87ns ± 0.60ns 634.90ns — 637.21ns Report 📓
enc/allocated/musli_packed 188.96ns ± 0.12ns 188.74ns — 189.23ns Report 📓
enc/allocated/musli_storage 576.68ns ± 0.60ns 575.65ns — 577.98ns Report 📓
enc/allocated/musli_value3 2.55μs ± 3.03ns 2.54μs — 2.56μs Report 📓
enc/allocated/musli_wire 624.50ns ± 0.84ns 623.01ns — 626.31ns Report 📓
enc/allocated/speedy 506.55ns ± 0.31ns 506.00ns — 507.20ns Report 📓
speedy/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/musli_descriptive 10.86μs ± 15.04ns 10.83μs — 10.89μs Report 📓
dec/mesh/musli_packed 92.23ns ± 0.07ns 92.09ns — 92.36ns Report 📓
dec/mesh/musli_storage 7.42μs ± 7.55ns 7.41μs — 7.44μs Report 📓
dec/mesh/musli_value3 3.43μs ± 2.81ns 3.43μs — 3.44μs Report 📓
dec/mesh/musli_wire 8.50μs ± 9.42ns 8.48μs — 8.52μs Report 📓
dec/mesh/speedy 73.65ns ± 0.08ns 73.51ns — 73.81ns Report 📓
speedy/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/musli_descriptive 5.04μs ± 4.83ns 5.03μs — 5.05μs Report 📓
enc/mesh/musli_packed 42.44ns ± 0.03ns 42.39ns — 42.52ns Report 📓
enc/mesh/musli_storage 4.13μs ± 2.29ns 4.13μs — 4.14μs Report 📓
enc/mesh/musli_value3 26.29μs ± 40.76ns 26.21μs — 26.37μs Report 📓
enc/mesh/musli_wire 5.82μs ± 4.22ns 5.81μs — 5.83μs Report 📓
enc/mesh/speedy 69.80ns ± 0.05ns 69.72ns — 69.90ns Report 📓

ε-serde

Custom environment:

This is a test suite for ε-serde features.

More:

epserde/dec/primitives
Report 📓
Group Mean Interval Link
dec/primitives/epserde 2.00μs ± 1.82ns 2.00μs — 2.01μs Report 📓
dec/primitives/musli_descriptive 1.16μs ± 1.15ns 1.16μs — 1.17μs Report 📓
dec/primitives/musli_packed 24.78ns ± 0.02ns 24.75ns — 24.82ns Report 📓
dec/primitives/musli_storage 868.15ns ± 1.15ns 866.06ns — 870.57ns Report 📓
dec/primitives/musli_value3 397.47ns ± 0.27ns 397.00ns — 398.04ns Report 📓
dec/primitives/musli_wire 866.28ns ± 0.66ns 865.22ns — 867.76ns Report 📓
epserde/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/epserde 1.78μs ± 2.06ns 1.77μs — 1.78μs Report 📓
enc/primitives/musli_descriptive 966.69ns ± 0.99ns 965.02ns — 968.85ns Report 📓
enc/primitives/musli_packed 20.19ns ± 0.01ns 20.17ns — 20.22ns Report 📓
enc/primitives/musli_storage 565.79ns ± 0.53ns 564.81ns — 566.88ns Report 📓
enc/primitives/musli_value3 1.24μs ± 1.48ns 1.23μs — 1.24μs Report 📓
enc/primitives/musli_wire 835.83ns ± 1.10ns 833.87ns — 838.16ns Report 📓
epserde/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/epserde 2.35μs ± 2.18ns 2.35μs — 2.36μs Report 📓
dec/packed/musli_descriptive 1.18μs ± 1.33ns 1.18μs — 1.18μs Report 📓
dec/packed/musli_packed 5.16ns ± 0.00ns 5.16ns — 5.17ns Report 📓
dec/packed/musli_storage 897.30ns ± 0.99ns 895.52ns — 899.37ns Report 📓
dec/packed/musli_value3 402.31ns ± 0.46ns 401.51ns — 403.30ns Report 📓
dec/packed/musli_wire 895.99ns ± 0.82ns 894.53ns — 897.73ns Report 📓
epserde/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/epserde 2.10μs ± 1.67ns 2.09μs — 2.10μs Report 📓
enc/packed/musli_descriptive 922.34ns ± 0.65ns 921.15ns — 923.71ns Report 📓
enc/packed/musli_packed 6.86ns ± 0.00ns 6.85ns — 6.87ns Report 📓
enc/packed/musli_storage 539.42ns ± 0.45ns 538.60ns — 540.36ns Report 📓
enc/packed/musli_value3 1.65μs ± 2.21ns 1.65μs — 1.66μs Report 📓
enc/packed/musli_wire 580.23ns ± 0.53ns 579.29ns — 581.37ns Report 📓
epserde/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/epserde 2.35μs ± 3.24ns 2.35μs — 2.36μs Report 📓
dec/mesh/musli_descriptive 12.70ms ± 8.06μs 12.69ms — 12.72ms Report 📓
dec/mesh/musli_packed 385.70μs ± 599.97ns 384.68μs — 387.02μs Report 📓
dec/mesh/musli_storage 7.77ms ± 2.64μs 7.77ms — 7.78ms Report 📓
dec/mesh/musli_value3 5.47ms ± 2.52μs 5.47ms — 5.48ms Report 📓
dec/mesh/musli_wire 8.88ms ± 3.64μs 8.88ms — 8.89ms Report 📓
epserde/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/epserde 113.26μs ± 495.97ns 112.65μs — 114.34μs Report 📓
enc/mesh/musli_descriptive 5.37ms ± 4.12μs 5.37ms — 5.38ms Report 📓
enc/mesh/musli_packed 110.06μs ± 134.62ns 109.81μs — 110.34μs Report 📓
enc/mesh/musli_storage 4.02ms ± 2.48μs 4.02ms — 4.03ms Report 📓
enc/mesh/musli_value3 27.11ms ± 38.20μs 27.04ms — 27.19ms Report 📓
enc/mesh/musli_wire 7.51ms ± 3.37μs 7.50ms — 7.52ms 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/packed
Report 📓
Group Mean Interval Link
dec/packed/musli_zerocopy 2.66ns ± 0.01ns 2.65ns — 2.67ns Report 📓
dec/packed/zerocopy 6.67ns ± 0.02ns 6.64ns — 6.70ns Report 📓
zerocopy-zerocopy/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/musli_zerocopy 17.86ns ± 0.02ns 17.83ns — 17.91ns Report 📓
enc/packed/zerocopy 7.33ns ± 0.01ns 7.30ns — 7.35ns 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 242.59ns ± 0.26ns 242.17ns — 243.16ns Report 📓
dec/primitives/musli_descriptive 1.21μs ± 2.18ns 1.20μs — 1.21μs Report 📓
dec/primitives/musli_packed 22.21ns ± 0.02ns 22.17ns — 22.25ns Report 📓
dec/primitives/musli_storage 865.59ns ± 1.34ns 863.12ns — 868.33ns Report 📓
dec/primitives/musli_wire 869.22ns ± 1.19ns 867.27ns — 871.86ns Report 📓
bitcode-derive/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/derive_bitcode 1.29μs ± 2.15ns 1.29μs — 1.30μs Report 📓
enc/primitives/musli_descriptive 973.08ns ± 1.70ns 970.45ns — 976.92ns Report 📓
enc/primitives/musli_packed 20.05ns ± 0.02ns 20.01ns — 20.09ns Report 📓
enc/primitives/musli_storage 571.74ns ± 1.17ns 569.78ns — 574.30ns Report 📓
enc/primitives/musli_wire 840.35ns ± 1.13ns 838.31ns — 842.70ns Report 📓
bitcode-derive/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/derive_bitcode 243.67ns ± 0.32ns 243.15ns — 244.38ns Report 📓
dec/packed/musli_descriptive 1.18μs ± 1.30ns 1.18μs — 1.19μs Report 📓
dec/packed/musli_packed 26.10ns ± 0.02ns 26.06ns — 26.13ns Report 📓
dec/packed/musli_storage 893.12ns ± 1.57ns 890.48ns — 896.57ns Report 📓
dec/packed/musli_wire 888.71ns ± 1.33ns 886.61ns — 891.72ns Report 📓
bitcode-derive/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/derive_bitcode 1.31μs ± 1.91ns 1.31μs — 1.32μs Report 📓
enc/packed/musli_descriptive 925.67ns ± 1.55ns 923.32ns — 929.22ns Report 📓
enc/packed/musli_packed 21.65ns ± 0.02ns 21.62ns — 21.69ns Report 📓
enc/packed/musli_storage 542.05ns ± 0.70ns 540.87ns — 543.59ns Report 📓
enc/packed/musli_wire 581.65ns ± 0.82ns 580.31ns — 583.47ns Report 📓
bitcode-derive/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/derive_bitcode 3.09μs ± 4.02ns 3.09μs — 3.10μs Report 📓
dec/full_enum/musli_descriptive 2.56μs ± 4.40ns 2.55μs — 2.56μs Report 📓
dec/full_enum/musli_packed 582.73ns ± 1.07ns 580.79ns — 584.98ns Report 📓
dec/full_enum/musli_storage 1.85μs ± 2.43ns 1.84μs — 1.85μs Report 📓
dec/full_enum/musli_wire 1.94μs ± 2.72ns 1.93μs — 1.94μs Report 📓
bitcode-derive/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/derive_bitcode 13.36μs ± 21.70ns 13.32μs — 13.40μs Report 📓
enc/full_enum/musli_descriptive 1.41μs ± 2.07ns 1.41μs — 1.42μs Report 📓
enc/full_enum/musli_packed 144.82ns ± 0.12ns 144.58ns — 145.07ns Report 📓
enc/full_enum/musli_storage 924.67ns ± 1.31ns 922.40ns — 927.53ns Report 📓
enc/full_enum/musli_wire 1.40μs ± 1.64ns 1.40μs — 1.40μs Report 📓
bitcode-derive/dec/large
Report 📓
Group Mean Interval Link
dec/large/derive_bitcode 36.77μs ± 79.92ns 36.65μs — 36.95μs Report 📓
dec/large/musli_descriptive 195.23μs ± 294.64ns 194.80μs — 195.91μs Report 📓
dec/large/musli_packed 41.62μs ± 48.03ns 41.54μs — 41.72μs Report 📓
dec/large/musli_storage 150.64μs ± 216.53ns 150.28μs — 151.12μs Report 📓
dec/large/musli_wire 177.35μs ± 240.67ns 176.95μs — 177.89μs Report 📓
bitcode-derive/enc/large
Report 📓
Group Mean Interval Link
enc/large/derive_bitcode 83.83μs ± 234.76ns 83.44μs — 84.35μs Report 📓
enc/large/musli_descriptive 103.40μs ± 137.45ns 103.16μs — 103.69μs Report 📓
enc/large/musli_packed 10.43μs ± 10.46ns 10.41μs — 10.45μs Report 📓
enc/large/musli_storage 68.44μs ± 95.17ns 68.29μs — 68.66μs Report 📓
enc/large/musli_wire 105.11μs ± 143.61ns 104.89μs — 105.44μs Report 📓
bitcode-derive/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/derive_bitcode 3.96μs ± 5.30ns 3.95μs — 3.98μs Report 📓
dec/allocated/musli_descriptive 3.83μs ± 8.02ns 3.82μs — 3.85μs Report 📓
dec/allocated/musli_packed 2.69μs ± 2.50ns 2.68μs — 2.69μs Report 📓
dec/allocated/musli_storage 3.52μs ± 5.74ns 3.51μs — 3.53μs Report 📓
dec/allocated/musli_wire 3.74μs ± 4.75ns 3.73μs — 3.75μs Report 📓
bitcode-derive/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/derive_bitcode 7.22μs ± 11.13ns 7.21μs — 7.25μs Report 📓
enc/allocated/musli_descriptive 588.06ns ± 0.68ns 586.89ns — 589.55ns Report 📓
enc/allocated/musli_packed 171.90ns ± 0.12ns 171.68ns — 172.15ns Report 📓
enc/allocated/musli_storage 522.95ns ± 1.14ns 521.12ns — 525.50ns Report 📓
enc/allocated/musli_wire 557.36ns ± 0.99ns 555.78ns — 559.60ns Report 📓
bitcode-derive/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/derive_bitcode 345.66ns ± 0.40ns 345.00ns — 346.56ns Report 📓
dec/mesh/musli_descriptive 8.11μs ± 11.79ns 8.09μs — 8.14μs Report 📓
dec/mesh/musli_packed 87.20ns ± 0.08ns 87.05ns — 87.35ns Report 📓
dec/mesh/musli_storage 4.97μs ± 5.21ns 4.96μs — 4.98μs Report 📓
dec/mesh/musli_wire 5.72μs ± 14.10ns 5.70μs — 5.75μs Report 📓
bitcode-derive/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/derive_bitcode 1.79μs ± 2.03ns 1.79μs — 1.80μs Report 📓
enc/mesh/musli_descriptive 3.39μs ± 5.51ns 3.38μs — 3.40μs Report 📓
enc/mesh/musli_packed 33.66ns ± 0.02ns 33.62ns — 33.71ns Report 📓
enc/mesh/musli_storage 2.54μs ± 4.52ns 2.53μs — 2.55μs Report 📓
enc/mesh/musli_wire 4.72μs ± 4.42ns 4.71μs — 4.73μs 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/bson4 2.81μs ± 5.28ns 2.80μs — 2.82μs Report 📓
dec/primitives/musli_descriptive 894.29ns ± 1.14ns 892.38ns — 896.80ns Report 📓
dec/primitives/musli_packed 15.34ns ± 0.01ns 15.32ns — 15.36ns Report 📓
dec/primitives/musli_storage 603.48ns ± 1.16ns 601.75ns — 606.11ns Report 📓
dec/primitives/musli_wire 613.57ns ± 1.19ns 611.57ns — 616.21ns Report 📓
bson/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/bson4 1.35μs ± 1.63ns 1.34μs — 1.35μs Report 📓
enc/primitives/musli_descriptive 329.47ns ± 0.45ns 328.68ns — 330.45ns Report 📓
enc/primitives/musli_packed 17.88ns ± 0.02ns 17.85ns — 17.91ns Report 📓
enc/primitives/musli_storage 254.92ns ± 0.31ns 254.39ns — 255.59ns Report 📓
enc/primitives/musli_wire 494.41ns ± 0.99ns 492.55ns — 496.45ns Report 📓
bson/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/bson4 4.03μs ± 5.64ns 4.02μs — 4.04μs Report 📓
dec/packed/musli_descriptive 923.24ns ± 1.18ns 921.19ns — 925.82ns Report 📓
dec/packed/musli_packed 22.30ns ± 0.02ns 22.27ns — 22.34ns Report 📓
dec/packed/musli_storage 599.07ns ± 0.71ns 597.87ns — 600.63ns Report 📓
dec/packed/musli_wire 587.26ns ± 0.63ns 586.15ns — 588.62ns Report 📓
bson/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/bson4 2.40μs ± 3.74ns 2.39μs — 2.41μs Report 📓
enc/packed/musli_descriptive 337.91ns ± 0.38ns 337.27ns — 338.73ns Report 📓
enc/packed/musli_packed 19.54ns ± 0.02ns 19.50ns — 19.58ns Report 📓
enc/packed/musli_storage 250.07ns ± 0.32ns 249.53ns — 250.76ns Report 📓
enc/packed/musli_wire 284.14ns ± 0.38ns 283.49ns — 284.98ns Report 📓
bson/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/bson4 9.78μs ± 12.25ns 9.76μs — 9.81μs Report 📓
dec/full_enum/musli_descriptive 2.41μs ± 2.31ns 2.41μs — 2.42μs Report 📓
dec/full_enum/musli_packed 743.34ns ± 1.13ns 741.34ns — 745.73ns Report 📓
dec/full_enum/musli_storage 1.71μs ± 2.42ns 1.71μs — 1.72μs Report 📓
dec/full_enum/musli_wire 1.88μs ± 2.76ns 1.87μs — 1.88μs Report 📓
bson/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/bson4 6.63μs ± 8.58ns 6.62μs — 6.65μs Report 📓
enc/full_enum/musli_descriptive 829.47ns ± 1.06ns 827.66ns — 831.80ns Report 📓
enc/full_enum/musli_packed 117.25ns ± 0.15ns 116.98ns — 117.57ns Report 📓
enc/full_enum/musli_storage 606.37ns ± 0.70ns 605.18ns — 607.92ns Report 📓
enc/full_enum/musli_wire 1.09μs ± 1.27ns 1.09μs — 1.09μs Report 📓
bson/dec/large
Report 📓
Group Mean Interval Link
dec/large/bson4 2.08ms ± 1.54μs 2.08ms — 2.08ms Report 📓
dec/large/musli_descriptive 483.76μs ± 575.58ns 482.83μs — 485.05μs Report 📓
dec/large/musli_packed 105.56μs ± 92.55ns 105.39μs — 105.75μs Report 📓
dec/large/musli_storage 347.21μs ± 634.82ns 346.23μs — 348.65μs Report 📓
dec/large/musli_wire 448.98μs ± 598.08ns 448.03μs — 450.32μs Report 📓
bson/enc/large
Report 📓
Group Mean Interval Link
enc/large/bson4 1.12ms ± 1.63μs 1.12ms — 1.13ms Report 📓
enc/large/musli_descriptive 169.80μs ± 265.09ns 169.39μs — 170.40μs Report 📓
enc/large/musli_packed 32.26μs ± 28.21ns 32.21μs — 32.32μs Report 📓
enc/large/musli_storage 131.41μs ± 152.96ns 131.17μs — 131.75μs Report 📓
enc/large/musli_wire 235.26μs ± 364.90ns 234.72μs — 236.10μs Report 📓
bson/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/bson4 7.57μs ± 9.67ns 7.55μs — 7.59μs Report 📓
dec/allocated/musli_descriptive 3.13μs ± 5.46ns 3.12μs — 3.15μs Report 📓
dec/allocated/musli_packed 2.33μs ± 1.35ns 2.32μs — 2.33μs Report 📓
dec/allocated/musli_storage 2.84μs ± 3.60ns 2.83μs — 2.84μs Report 📓
dec/allocated/musli_wire 2.84μs ± 3.35ns 2.83μs — 2.84μs Report 📓
bson/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/bson4 2.42μs ± 2.86ns 2.42μs — 2.43μs Report 📓
enc/allocated/musli_descriptive 403.64ns ± 0.54ns 402.72ns — 404.82ns Report 📓
enc/allocated/musli_packed 155.10ns ± 0.10ns 154.92ns — 155.31ns Report 📓
enc/allocated/musli_storage 341.22ns ± 0.57ns 340.22ns — 342.44ns Report 📓
enc/allocated/musli_wire 347.26ns ± 0.93ns 346.06ns — 349.34ns Report 📓
bson/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/bson4 34.50μs ± 57.26ns 34.41μs — 34.63μs Report 📓
dec/mesh/musli_descriptive 11.34μs ± 12.33ns 11.32μs — 11.37μs Report 📓
dec/mesh/musli_packed 91.64ns ± 0.07ns 91.51ns — 91.78ns Report 📓
dec/mesh/musli_storage 6.93μs ± 5.80ns 6.92μs — 6.94μs Report 📓
dec/mesh/musli_wire 7.96μs ± 11.81ns 7.94μs — 7.99μs Report 📓
bson/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/bson4 12.68μs ± 21.50ns 12.65μs — 12.73μs Report 📓
enc/mesh/musli_descriptive 4.75μs ± 10.54ns 4.73μs — 4.77μs Report 📓
enc/mesh/musli_packed 40.25ns ± 0.03ns 40.21ns — 40.32ns Report 📓
enc/mesh/musli_storage 3.54μs ± 9.21ns 3.53μs — 3.56μs Report 📓
enc/mesh/musli_wire 6.63μs ± 12.47ns 6.62μs — 6.66μs 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.08μs ± 2.86ns 2.07μs — 2.08μs Report 📓
dec/primitives/musli_json 2.60μs ± 4.45ns 2.59μs — 2.61μs Report 📓
dec/primitives/serde_json 2.22μs ± 4.51ns 2.21μs — 2.23μs Report 📓
miniserde/enc/primitives
Report 📓
Group Mean Interval Link
enc/primitives/miniserde 2.32μs ± 4.30ns 2.31μs — 2.33μs Report 📓
enc/primitives/musli_json 1.00μs ± 1.07ns 1.00μs — 1.00μs Report 📓
enc/primitives/serde_json 960.23ns ± 0.78ns 958.84ns — 961.90ns Report 📓
miniserde/dec/packed
Report 📓
Group Mean Interval Link
dec/packed/miniserde 2.79μs ± 4.09ns 2.78μs — 2.79μs Report 📓
dec/packed/musli_json 3.45μs ± 5.29ns 3.44μs — 3.46μs Report 📓
dec/packed/serde_json 2.78μs ± 4.22ns 2.78μs — 2.79μs Report 📓
miniserde/enc/packed
Report 📓
Group Mean Interval Link
enc/packed/miniserde 3.04μs ± 4.86ns 3.03μs — 3.05μs Report 📓
enc/packed/musli_json 913.05ns ± 1.87ns 910.07ns — 917.26ns Report 📓
enc/packed/serde_json 1.13μs ± 1.84ns 1.12μs — 1.13μs Report 📓
miniserde/dec/full_enum
Report 📓
Group Mean Interval Link
dec/full_enum/miniserde 68.30ns ± 0.09ns 68.15ns — 68.49ns Report 📓
dec/full_enum/musli_json 60.54ns ± 0.07ns 60.43ns — 60.69ns Report 📓
dec/full_enum/serde_json 71.29ns ± 0.07ns 71.18ns — 71.46ns Report 📓
miniserde/enc/full_enum
Report 📓
Group Mean Interval Link
enc/full_enum/miniserde 97.52ns ± 0.08ns 97.39ns — 97.69ns Report 📓
enc/full_enum/musli_json 23.46ns ± 0.02ns 23.42ns — 23.52ns Report 📓
enc/full_enum/serde_json 28.14ns ± 0.03ns 28.10ns — 28.21ns Report 📓
miniserde/dec/large
Report 📓
Group Mean Interval Link
dec/large/miniserde 123.13μs ± 206.83ns 122.81μs — 123.60μs Report 📓
dec/large/musli_json 180.81μs ± 207.13ns 180.45μs — 181.25μs Report 📓
dec/large/serde_json 146.16μs ± 194.83ns 145.82μs — 146.58μs Report 📓
miniserde/enc/large
Report 📓
Group Mean Interval Link
enc/large/miniserde 102.20μs ± 133.81ns 101.97μs — 102.49μs Report 📓
enc/large/musli_json 63.35μs ± 115.05ns 63.16μs — 63.61μs Report 📓
enc/large/serde_json 62.39μs ± 61.87ns 62.28μs — 62.52μs Report 📓
miniserde/dec/allocated
Report 📓
Group Mean Interval Link
dec/allocated/miniserde 672.90ns ± 0.73ns 671.58ns — 674.43ns Report 📓
dec/allocated/musli_json 667.41ns ± 1.12ns 665.68ns — 669.97ns Report 📓
dec/allocated/serde_json 478.08ns ± 0.58ns 477.13ns — 479.37ns Report 📓
miniserde/enc/allocated
Report 📓
Group Mean Interval Link
enc/allocated/miniserde 742.58ns ± 1.10ns 740.63ns — 744.91ns Report 📓
enc/allocated/musli_json 167.73ns ± 0.28ns 167.30ns — 168.36ns Report 📓
enc/allocated/serde_json 186.23ns ± 0.24ns 185.82ns — 186.74ns Report 📓
miniserde/dec/mesh
Report 📓
Group Mean Interval Link
dec/mesh/miniserde 22.67μs ± 28.08ns 22.62μs — 22.73μs Report 📓
dec/mesh/musli_json 30.79μs ± 57.71ns 30.70μs — 30.92μs Report 📓
dec/mesh/serde_json 24.65μs ± 42.67ns 24.58μs — 24.75μs Report 📓
miniserde/enc/mesh
Report 📓
Group Mean Interval Link
enc/mesh/miniserde 25.78μs ± 27.94ns 25.74μs — 25.85μs Report 📓
enc/mesh/musli_json 12.84μs ± 20.78ns 12.81μs — 12.88μs Report 📓
enc/mesh/serde_json 14.04μs ± 24.13ns 14.00μs — 14.09μs 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 packed large allocated full_enum mesh
bincode1 94.96 ± 0.21 96.00 ± 0.00 30208.80 ± 7034.59 703.59 ± 118.28 42.81 ± 47.63 699.20 ± 141.09
bincode_derive 104.95 ± 0.24 105.99 ± 0.13 31145.70 ± 7637.40 596.71 ± 113.92 39.06 ± 47.06 -
bincode_serde 104.95 ± 0.24 105.99 ± 0.13 31145.70 ± 7637.40 596.71 ± 113.92 39.06 ± 47.06 692.20 ± 141.09
musli_descriptive 159.89 ± 1.56 165.80 ± 1.56 44494.00 ± 11746.63 641.46 ± 115.90 54.22 ± 65.14 1573.60 ± 320.39
musli_packed 95.00 ± 0.00 96.00 ± 0.00 43302.60 ± 11282.30 704.59 ± 118.28 59.82 ± 54.29 699.20 ± 141.09
musli_storage 127.86 ± 1.36 130.88 ± 1.38 36673.30 ± 9394.13 612.47 ± 114.19 43.76 ± 53.15 1169.40 ± 238.09
musli_wire 143.30 ± 1.77 148.43 ± 1.87 41447.90 ± 10846.27 628.39 ± 116.25 49.77 ± 59.66 1342.20 ± 273.36
postcard 110.85 ± 1.41 110.81 ± 1.34 31857.70 ± 7838.74 599.47 ± 114.19 40.01 ± 48.33 692.20 ± 141.09
serde_bitcode 104.92 ± 0.38 105.00 ± 0.00 27956.30 ± 6598.06 593.73 ± 113.18 39.18 ± 47.18 692.20 ± 141.09
serde_rmp 113.82 ± 0.73 119.88 ± 1.48 35601.10 ± 8759.26 605.43 ± 114.89 51.40 ± 51.06 938.80 ± 191.97

Text-based formats sizes

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

framework primitives packed large allocated full_enum mesh
musli_json5 435.41 ± 2.37 452.29 ± 2.99 93040.40 ± 26685.95 927.04 ± 125.87 110.17 ± 154.95 3029.50 ± 614.36
serde_json5 435.41 ± 2.37 452.29 ± 2.99 92751.90 ± 26682.24 925.04 ± 125.87 107.54 ± 155.44 3029.50 ± 614.36

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 packed large allocated full_enum mesh
musli_descriptive 116.36 ± 1.46 122.33 ± 1.46 33591.80 ± 12329.35 494.43 ± 97.87 48.72 ± 54.91 1421.00 ± 182.39
musli_packed 63.00 ± 0.00 64.00 ± 0.00 32171.90 ± 13016.96 548.77 ± 99.63 55.74 ± 48.59 632.00 ± 80.32
musli_storage 88.25 ± 1.28 91.33 ± 1.23 26568.20 ± 9752.04 472.96 ± 96.86 38.78 ± 44.39 1056.00 ± 135.54
musli_wire 101.86 ± 1.75 106.83 ± 1.77 30855.30 ± 11435.09 483.71 ± 98.16 44.50 ± 50.43 1212.00 ± 155.62
serde_cbor6 212.69 ± 0.53 221.17 ± 0.85 39243.90 ± 12008.24 572.14 ± 97.56 66.21 ± 80.70 1376.60 ± 175.82

Speedy sizes

Missing features:

This is a test suite for speedy features.

framework primitives packed large allocated full_enum mesh
musli_descriptive 147.31 ± 1.51 153.36 ± 1.46 46767.80 ± 15397.84 635.71 ± 109.28 51.89 ± 61.47 1497.30 ± 348.29
musli_packed 87.00 ± 0.00 88.00 ± 0.00 46003.20 ± 15427.67 694.45 ± 110.74 58.07 ± 51.97 665.60 ± 153.37
musli_storage 117.32 ± 1.32 120.35 ± 1.27 38383.60 ± 12302.37 607.50 ± 107.60 41.72 ± 50.11 1112.70 ± 258.82
musli_wire 131.81 ± 1.82 136.96 ± 1.67 43542.50 ± 14259.70 623.65 ± 109.65 47.57 ± 56.34 1277.10 ± 297.16
speedy 87.00 ± 0.00 88.00 ± 0.00 30849.60 ± 9393.87 630.17 ± 108.46 39.57 ± 43.73 661.60 ± 153.37

ε-serde sizes

Custom environment:

This is a test suite for ε-serde features.

framework primitives packed large allocated full_enum mesh
epserde 192.00 ± 0.00 176.00 ± 0.00 - - - 705537.60 ± 125339.04
musli_descriptive 159.89 ± 1.56 165.80 ± 1.56 2162425.10 ± 404103.99 649.34 ± 119.45 4711.84 ± 12604.08 1602001.10 ± 284624.51
musli_packed 95.00 ± 0.00 96.00 ± 0.00 2029630.80 ± 323571.68 712.85 ± 121.77 1922.78 ± 5059.55 705473.60 ± 125339.04
musli_storage 127.86 ± 1.36 130.88 ± 1.38 1756605.40 ± 288816.58 620.22 ± 117.93 1906.92 ± 5050.42 1190477.50 ± 211510.07
musli_wire 143.30 ± 1.77 148.43 ± 1.87 2099262.30 ± 385125.17 636.17 ± 119.88 4248.45 ± 11363.68 1366844.90 ± 242844.83

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 packed large allocated full_enum mesh
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 packed large allocated full_enum mesh
derive_bitcode 104.92 ± 0.38 106.00 ± 0.00 27954.30 ± 6598.06 576.07 ± 105.21 39.10 ± 47.08 620.20 ± 127.81
musli_descriptive 159.89 ± 1.56 165.80 ± 1.56 44494.00 ± 11746.63 621.59 ± 107.19 54.16 ± 65.06 1410.10 ± 290.23
musli_packed 95.00 ± 0.00 96.00 ± 0.00 43302.60 ± 11282.30 679.79 ± 108.85 59.74 ± 54.17 627.20 ± 127.81
musli_storage 127.86 ± 1.36 130.88 ± 1.38 36673.30 ± 9394.13 593.64 ± 105.75 43.69 ± 53.07 1047.90 ± 215.68
musli_wire 143.30 ± 1.77 148.43 ± 1.87 41447.90 ± 10846.27 609.56 ± 107.54 49.70 ± 59.57 1202.70 ± 247.63

BSON sizes

Missing features:

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

framework primitives packed large allocated full_enum mesh
bson 240.94 ± 0.23 289.00 ± 0.00 90022.70 ± 16042.38 759.34 ± 121.79 100.64 ± 103.09 2635.50 ± 607.09
musli_descriptive 115.28 ± 1.32 121.39 ± 1.25 48964.60 ± 8696.71 590.50 ± 120.13 54.09 ± 55.11 1584.50 ± 365.60
musli_packed 63.00 ± 0.00 64.00 ± 0.00 49661.30 ± 9349.63 658.50 ± 123.36 60.90 ± 48.84 704.00 ± 161.00
musli_storage 87.24 ± 1.04 90.38 ± 1.00 39724.40 ± 7061.77 569.57 ± 118.65 43.07 ± 44.46 1177.50 ± 271.68
musli_wire 100.74 ± 1.60 105.91 ± 1.49 45522.80 ± 8116.22 579.40 ± 120.46 49.42 ± 50.50 1351.50 ± 311.93

Miniserde sizes

Missing features:

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

framework primitives packed large allocated full_enum mesh
miniserde 319.30 ± 2.27 355.35 ± 2.46 20566.30 ± 7047.02 98.08 ± 32.06 7.00 ± 0.00 4874.70 ± 859.03
musli_json5 310.67 ± 2.31 346.68 ± 2.53 20023.70 ± 6860.94 98.08 ± 32.06 7.00 ± 0.00 3261.00 ± 577.47
serde_json5 310.67 ± 2.31 346.68 ± 2.53 20023.70 ± 6860.94 98.08 ± 32.06 7.00 ± 0.00 3261.00 ± 577.47
  1. Version 1 of bincode serialization.  2 3 4 5 6 7 8 9 10 11 12

  2. bincode 2 is shifting away from serde, and the serde implementation does not support borrowing from its input.  2 3 4 5 6 7 8 9 10 11 12

  3. 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 31 32 33 34 35 36 37 38 39 40 41 42

  4. 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 11 12

  5. 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

  6. Lacks 128-bit support.