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

store: use loser trees #7304

Merged
merged 1 commit into from
Apr 26, 2024
Merged

store: use loser trees #7304

merged 1 commit into from
Apr 26, 2024

Commits on Apr 26, 2024

  1. store: use loser trees

    Remove a long-standing TODO item in the code - let's use the great loser
    tree implementation by Bryan. It is faster than the heap because less
    comparisons are needed. Should be a nice improvement given that the heap
    is used in a lot of hot paths.
    
    Since Prometheus also uses this library, it's tricky to import the "any"
    version. I tried doing bboreham/go-loser#3 but
    it's still impossible to do that. Let's just copy/paste the code, it's
    not a lot.
    
    Bench:
    
    ```
    goos: linux
    goarch: amd64
    pkg: github.com/thanos-io/thanos/pkg/store
    cpu: Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz
                 │   oldkway   │               newkway               │
                 │   sec/op    │    sec/op     vs base               │
    KWayMerge-16   2.292m ± 3%   2.075m ± 15%  -9.47% (p=0.023 n=10)
    
                 │   oldkway    │               newkway               │
                 │     B/op     │     B/op      vs base               │
    KWayMerge-16   1.553Mi ± 0%   1.585Mi ± 0%  +2.04% (p=0.000 n=10)
    
                 │   oldkway   │              newkway               │
                 │  allocs/op  │  allocs/op   vs base               │
    KWayMerge-16   27.26k ± 0%   26.27k ± 0%  -3.66% (p=0.000 n=10)
    ```
    
    Signed-off-by: Giedrius Statkevičius <giedrius.statkevicius@vinted.com>
    GiedriusS committed Apr 26, 2024
    Configuration menu
    Copy the full SHA
    9790323 View commit details
    Browse the repository at this point in the history