mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-12 06:24:10 +01:00
This is improves performance significantly:
```
goos: linux
goarch: amd64
pkg: akvorado/outlet/routing/provider/bmp
cpu: AMD Ryzen 5 5600X 6-Core Processor
│ 1 │ 2 │
│ sec/route │ sec/route vs base │
RIBInsertion/1000_routes,_1_peers-12 466.6n ± ∞ ¹ 413.6n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/1000_routes,_2_peers-12 468.5n ± ∞ ¹ 424.6n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/1000_routes,_5_peers-12 475.0n ± ∞ ¹ 419.6n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/10000_routes,_1_peers-12 485.3n ± ∞ ¹ 434.1n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/10000_routes,_2_peers-12 532.6n ± ∞ ¹ 477.0n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/10000_routes,_5_peers-12 585.6n ± ∞ ¹ 551.9n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/100000_routes,_1_peers-12 623.8n ± ∞ ¹ 587.7n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/100000_routes,_2_peers-12 682.1n ± ∞ ¹ 637.8n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBInsertion/100000_routes,_5_peers-12 804.9n ± ∞ ¹ 740.8n ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 559.6n 510.1n -8.85%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ 1 │ 2 │
│ sec/op │ sec/op vs base │
RIBLookup/1000_routes,_1_peers-12 82.87n ± ∞ ¹ 14.59n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/1000_routes,_2_peers-12 82.86n ± ∞ ¹ 14.68n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/1000_routes,_5_peers-12 83.24n ± ∞ ¹ 14.56n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/10000_routes,_1_peers-12 87.27n ± ∞ ¹ 14.69n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/10000_routes,_2_peers-12 89.92n ± ∞ ¹ 14.62n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/10000_routes,_5_peers-12 99.67n ± ∞ ¹ 14.74n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/100000_routes,_1_peers-12 129.60n ± ∞ ¹ 14.68n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/100000_routes,_2_peers-12 121.50n ± ∞ ¹ 14.71n ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBLookup/100000_routes,_5_peers-12 122.90n ± ∞ ¹ 14.69n ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 98.40n 14.66n -85.10%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ 1 │ 2 │
│ ms/op │ ms/op vs base │
RIBFlush/1000_routes,_1_peers-12 268.9m ± ∞ ¹ 214.4m ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/1000_routes,_2_peers-12 457.2m ± ∞ ¹ 357.8m ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/1000_routes,_5_peers-12 954.7m ± ∞ ¹ 697.6m ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/10000_routes,_1_peers-12 2.832 ± ∞ ¹ 2.157 ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/10000_routes,_2_peers-12 5.660 ± ∞ ¹ 4.247 ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/10000_routes,_5_peers-12 14.00 ± ∞ ¹ 10.48 ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/100000_routes,_1_peers-12 48.33 ± ∞ ¹ 41.31 ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/100000_routes,_2_peers-12 86.33 ± ∞ ¹ 75.51 ± ∞ ¹ ~ (p=1.000 n=1) ²
RIBFlush/100000_routes,_5_peers-12 197.5 ± ∞ ¹ 155.7 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 6.534 5.138 -21.36%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
```
Suggested in https://github.com/gaissmai/bart/issues/247#issuecomment-3257156436.
33 lines
765 B
Go
33 lines
765 B
Go
// SPDX-FileCopyrightText: 2025 Free Mobile
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
package helpers_test
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"akvorado/common/helpers"
|
|
)
|
|
|
|
func TestUnmapPrefix(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
input string
|
|
output string
|
|
}{
|
|
{"0.0.0.0/0", "0.0.0.0/0"},
|
|
{"::/0", "::/0"},
|
|
{"192.168.12.0/24", "192.168.12.0/24"},
|
|
{"2001:db8::/52", "2001:db8::/52"},
|
|
{"::ffff:192.168.12.0/120", "192.168.12.0/24"},
|
|
{"::ffff:0.0.0.0/0", "::ffff:0.0.0.0/0"},
|
|
{"::ffff:0.0.0.0/96", "0.0.0.0/0"},
|
|
} {
|
|
prefix := netip.MustParsePrefix(tc.input)
|
|
got := helpers.UnmapPrefix(prefix).String()
|
|
if diff := helpers.Diff(got, tc.output); diff != "" {
|
|
t.Errorf("UnmapPrefix(%q) (-got, +want):\n%s", tc.input, diff)
|
|
}
|
|
}
|
|
}
|