Vincent Bernat
|
fdb65c93a5
|
outlet/routing: store v4 routes into a v4 tree
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.
|
2025-09-05 20:49:16 +02:00 |
|