Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor sorted map encode to use fewer buffers for nested maps. #537

Merged
merged 1 commit into from
May 20, 2024

Commits on May 19, 2024

  1. Refactor sorted map encode to use fewer buffers for nested maps.

    Runs a bit faster, but more importantly, only needs a single buffer to encode nested, sorted maps
    instead of using multiple temporary buffers.
    
                                                                │ before.txt  │             after.txt              │
                                                                │   sec/op    │   sec/op     vs base               │
    MarshalCanonical/Go_map[string]string_to_CBOR_map_canonical   1.464µ ± 0%   1.395µ ± 0%  -4.68% (p=0.000 n=10)
    MarshalCanonical/Go_map[int]int_to_CBOR_map_canonical         192.1n ± 0%   186.2n ± 1%  -3.10% (p=0.000 n=10)
    geomean                                                       530.2n        509.6n       -3.89%
    
                                                                │ before.txt │               after.txt               │
                                                                │    B/op    │    B/op      vs base                  │
    MarshalCanonical/Go_map[string]string_to_CBOR_map_canonical   88.00 ± 0%   112.00 ± 0%  +27.27% (p=0.000 n=10)
    MarshalCanonical/Go_map[int]int_to_CBOR_map_canonical         3.000 ± 0%    3.000 ± 0%        ~ (p=1.000 n=10) ¹
    geomean                                                       16.25         18.33       +12.82%
    ¹ all samples are equal
    
                                                                │ before.txt │              after.txt              │
                                                                │ allocs/op  │ allocs/op   vs base                 │
    MarshalCanonical/Go_map[string]string_to_CBOR_map_canonical   2.000 ± 0%   2.000 ± 0%       ~ (p=1.000 n=10) ¹
    MarshalCanonical/Go_map[int]int_to_CBOR_map_canonical         1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
    geomean                                                       1.414        1.414       +0.00%
    ¹ all samples are equal
    
    Signed-off-by: Ben Luddy <bluddy@redhat.com>
    benluddy committed May 19, 2024
    Configuration menu
    Copy the full SHA
    6396be3 View commit details
    Browse the repository at this point in the history