Skip to content

Conversation

@bep
Copy link
Member

@bep bep commented Nov 22, 2025

Slightly slower walking (the diff is in the calling of the callback function), but insertion is slightly faster and memory efficient, so overall a worth it.

                       │ master.bench │         feat-generics.bench         │
                       │    sec/op    │   sec/op     vs base                │
Insert-10                 150.8n ± 2%   147.9n ± 5%  -1.89% (p=0.041 n=6)
Radix/Walk-10             30.93µ ± 0%   33.55µ ± 0%  +8.46% (p=0.002 n=6)
Radix/WalkPrefix-10       273.4n ± 0%   300.3n ± 0%  +9.86% (p=0.002 n=6)
Radix/WalkPath-10         35.39n ± 0%   35.79n ± 0%  +1.13% (p=0.002 n=6)
Radix/Walk#01-10          30.90µ ± 0%
Radix/Get-10              32.32n ± 0%   32.01n ± 0%  -0.96% (p=0.002 n=6)
Radix/LongestPrefix-10    35.43n ± 0%   35.12n ± 0%  -0.87% (p=0.002 n=6)
geomean                   398.5n        197.9n       +2.51%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                       │ master.bench │         feat-generics.bench          │
                       │     B/op     │    B/op     vs base                  │
Insert-10                137.0 ± 0%     129.0 ± 0%  -5.84% (p=0.002 n=6)
Radix/Walk-10            0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPrefix-10      0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPath-10        0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk#01-10         0.000 ± 0%
Radix/Get-10             0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/LongestPrefix-10   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                             ²               -1.00%               ³ ²
¹ all samples are equal
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable

                       │ master.bench │         feat-generics.bench          │
                       │  allocs/op   │ allocs/op   vs base                  │
Insert-10                3.000 ± 0%     3.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk-10            0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPrefix-10      0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPath-10        0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk#01-10         0.000 ± 0%
Radix/Get-10             0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/LongestPrefix-10   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                             ²               +0.00%               ³ ²
Slightly slower walking (the diff is in the calling of the callback function), but insertion is slightly faster and memory efficient, so overall a worth it.

```
                       │ master.bench │         feat-generics.bench         │
                       │    sec/op    │   sec/op     vs base                │
Insert-10                 150.8n ± 2%   147.9n ± 5%  -1.89% (p=0.041 n=6)
Radix/Walk-10             30.93µ ± 0%   33.55µ ± 0%  +8.46% (p=0.002 n=6)
Radix/WalkPrefix-10       273.4n ± 0%   300.3n ± 0%  +9.86% (p=0.002 n=6)
Radix/WalkPath-10         35.39n ± 0%   35.79n ± 0%  +1.13% (p=0.002 n=6)
Radix/Walk#01-10          30.90µ ± 0%
Radix/Get-10              32.32n ± 0%   32.01n ± 0%  -0.96% (p=0.002 n=6)
Radix/LongestPrefix-10    35.43n ± 0%   35.12n ± 0%  -0.87% (p=0.002 n=6)
geomean                   398.5n        197.9n       +2.51%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                       │ master.bench │         feat-generics.bench          │
                       │     B/op     │    B/op     vs base                  │
Insert-10                137.0 ± 0%     129.0 ± 0%  -5.84% (p=0.002 n=6)
Radix/Walk-10            0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPrefix-10      0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPath-10        0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk#01-10         0.000 ± 0%
Radix/Get-10             0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/LongestPrefix-10   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                             ²               -1.00%               ³ ²
¹ all samples are equal
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable

                       │ master.bench │         feat-generics.bench          │
                       │  allocs/op   │ allocs/op   vs base                  │
Insert-10                3.000 ± 0%     3.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk-10            0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPrefix-10      0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/WalkPath-10        0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/Walk#01-10         0.000 ± 0%
Radix/Get-10             0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
Radix/LongestPrefix-10   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                             ²               +0.00%               ³ ²
````
@bep bep merged commit 67a5048 into gohugoio:master Nov 22, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant