iprbench
September 4, 2026 · View on GitHub
comparing benchmarks for some golang IP routing table implementations:
github.com/gaissmai/bart.Table
github.com/gaissmai/bart.Lite
github.com/gaissmai/bart.Fast
github.com/aromatt/netipds
github.com/k-sone/critbitgo
github.com/Asphaltt/lpmtrie
github.com/kentik/patricia
The ~1_000_000 Tier1 prefix test records (IPv4 and IPv6 routes) are from a full Internet routing table with typical ISP prefix distribution.
In comparison, the prefix lengths for the real-world random test sets are equally distributed between /8-28 for IPv4 and /16-56 bits for IPv6 (limited to the 2000::/3 global unicast address space).
The real-world RandomPrefixes without IP versions labeling are composed of a distribution of 4 parts IPv4 to 1 part IPv6 random prefixes, which is approximately the current ratio in the Internet backbone routers.
make your own benchmarks
$ # IMPORTANT: set the proper cpu feature flags for amd64, e.g.
$ export GOAMD64=v3
$ make dep
$ make -B all # takes some time!
lpm (longest-prefix-match)
bart.Fast is by far the fastest software algorithm for IP-address longest-prefix-match.
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ lite/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 20.41n ± 2% -2.32% (p=0.005 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 34.13n ± 3% -16.27% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 19.42n ± 1% -7.92% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 34.85n ± 2% -13.43% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 18.80n ± 1% -3.47% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 15.98n ± 1% -6.30% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 18.65n ± 1% -4.06% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 15.88n ± 1% -3.20% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 19.77n ± 4% -3.30% (p=0.008 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 20.83n ± 2% ~ (p=0.072 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 20.23n ± 1% -0.98% (p=0.010 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 20.24n ± 1% -1.70% (p=0.001 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 16.17n ± 3% ~ (p=0.739 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 32.50n ± 1% ~ (p=0.644 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 25.04n ± 2% -8.36% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 33.95n ± 3% ~ (p=0.061 n=10)
geomean 23.19n 22.07n -4.83%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ fast/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 18.41n ± 5% -11.87% (p=0.000 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 32.49n ± 3% -20.29% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 17.04n ± 5% -19.18% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 32.17n ± 6% -20.07% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 15.56n ± 4% -20.08% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 12.62n ± 1% -26.03% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 15.34n ± 1% -21.09% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 12.72n ± 1% -22.43% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 16.23n ± 1% -20.64% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 17.27n ± 2% -18.56% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 16.88n ± 4% -17.38% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 17.29n ± 2% -16.05% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 13.50n ± 3% -15.89% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 32.64n ± 4% ~ (p=0.755 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 23.65n ± 5% -13.43% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 33.37n ± 1% -4.27% (p=0.005 n=10)
geomean 23.19n 19.26n -16.95%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ netipds/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 137.55n ± 2% +558.45% (p=0.000 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 113.10n ± 1% +177.48% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 156.25n ± 1% +640.87% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 141.65n ± 5% +251.93% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 49.61n ± 1% +154.80% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 43.60n ± 3% +155.57% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 50.13n ± 1% +157.87% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 44.29n ± 1% +170.01% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 72.01n ± 3% +252.10% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 65.40n ± 4% +208.44% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 74.36n ± 1% +263.95% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 67.86n ± 3% +229.60% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 85.55n ± 3% +433.05% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 104.00n ± 2% +218.04% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 114.50n ± 1% +319.11% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 106.45n ± 1% +205.36% (p=0.000 n=10)
geomean 23.19n 82.10n +254.08%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ critbitgo/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 395.65n ± 3% +1793.97% (p=0.000 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 379.85n ± 3% +831.92% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 2935.00n ± 2% +13816.55% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 1270.50n ± 8% +3056.52% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 118.85n ± 2% +510.43% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 122.40n ± 1% +617.47% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 218.30n ± 1% +1022.94% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 176.65n ± 5% +976.81% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 175.10n ± 1% +756.23% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 164.95n ± 1% +677.88% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 417.10n ± 4% +1941.61% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 324.65n ± 3% +1476.74% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 259.40n ± 1% +1516.20% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 249.80n ± 4% +663.91% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 924.20n ± 10% +3282.87% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 576.95n ± 2% +1555.05% (p=0.000 n=10)
geomean 23.19n 346.1n +1392.86%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ lpmtrie/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 616.70n ± 8% +2852.13% (p=0.000 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 491.50n ± 9% +1105.84% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 380.60n ± 12% +1704.65% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 315.65n ± 2% +684.22% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 115.05n ± 1% +490.91% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 101.50n ± 1% +494.96% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 110.45n ± 1% +468.16% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 99.56n ± 1% +506.92% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 176.45n ± 1% +762.84% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 147.35n ± 1% +594.88% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 174.80n ± 1% +755.60% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 145.35n ± 1% +605.93% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 269.30n ± 4% +1577.88% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 216.70n ± 1% +562.69% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 245.35n ± 0% +798.06% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 207.90n ± 3% +496.39% (p=0.000 n=10)
geomean 23.19n 204.3n +781.00%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/lpm.bm │ kentik-patricia/lpm.bm │
│ sec/op │ sec/op vs base │
LpmTier1Pfxs/RandomMatchIP4 20.89n ± 3% 463.35n ± 4% +2118.05% (p=0.000 n=10)
LpmTier1Pfxs/RandomMatchIP6 40.76n ± 2% 398.90n ± 1% +878.66% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP4 21.09n ± 4% 316.70n ± 1% +1401.66% (p=0.000 n=10)
LpmTier1Pfxs/RandomMissIP6 40.25n ± 5% 282.15n ± 1% +600.99% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP4 19.47n ± 1% 114.25n ± 2% +486.80% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMatchIP6 17.06n ± 3% 96.78n ± 1% +467.29% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP4 19.44n ± 3% 104.20n ± 0% +436.01% (p=0.000 n=10)
LpmRandomPfxs/1_000/RandomMissIP6 16.40n ± 1% 85.03n ± 0% +418.32% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP4 20.45n ± 1% 188.55n ± 4% +822.00% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMatchIP6 21.21n ± 3% 153.60n ± 0% +624.36% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP4 20.43n ± 1% 156.75n ± 1% +667.25% (p=0.000 n=10)
LpmRandomPfxs/10_000/RandomMissIP6 20.59n ± 2% 140.20n ± 6% +580.91% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP4 16.05n ± 2% 297.45n ± 3% +1753.27% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMatchIP6 32.70n ± 7% 252.85n ± 4% +673.24% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP4 27.32n ± 3% 247.30n ± 3% +805.20% (p=0.000 n=10)
LpmRandomPfxs/100_000/RandomMissIP6 34.86n ± 4% 229.30n ± 5% +557.77% (p=0.000 n=10)
geomean 23.19n 195.1n +741.24%
size of the routing tables
bart.Lite has the lowest memory consumption under all competitors.
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ lite/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.30 ± 2% 85.39 ± 2% -18.91% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 63.94 ± 0% -23.84% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 36.97 ± 0% -34.82% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 30.07 ± 0% -39.29% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 23.63 ± 0% -44.92% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 20.42 ± 0% -48.62% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 61.90 ± 3% -25.08% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 38.30 ± 0% -33.24% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 49.81 ± 0% -30.91% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 43.92 ± 0% -32.59% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 31.18 ± 0% -40.54% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 25.84 ± 0% -44.38% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 66.27 ± 3% -20.86% (p=0.002 n=6)
RandomPfx6Size/10_000 101.40 ± 0% 80.81 ± 0% -20.31% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 53.59 ± 0% -25.25% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 51.40 ± 0% -25.92% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 53.93 ± 0% -25.46% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 59.52 ± 0% -24.59% (p=0.002 n=6)
RandomPfxSize/1_000 100.70 ± 2% 80.70 ± 2% -19.86% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 56.53 ± 0% -23.72% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 63.46 ± 0% -24.76% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 54.19 ± 0% -28.32% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 39.18 ± 0% -34.25% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 31.89 ± 0% -38.71% (p=0.002 n=6)
geomean 67.56 46.66 -30.93%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ fast/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.3 ± 2% 172.2 ± 1% +63.53% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 151.10 ± 0% +79.97% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 101.80 ± 0% +79.48% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 81.43 ± 0% +64.41% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 62.27 ± 0% +45.15% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 52.71 ± 0% +32.64% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 147.10 ± 1% +78.04% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 73.09 ± 0% +27.40% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 132.60 ± 0% +83.94% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 130.30 ± 0% +100.00% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 88.48 ± 0% +68.73% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 65.46 ± 0% +40.90% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 108.80 ± 2% +29.93% (p=0.002 n=6)
RandomPfx6Size/10_000 101.4 ± 0% 179.6 ± 0% +77.12% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 98.32 ± 0% +37.15% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 88.85 ± 0% +28.06% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 96.34 ± 0% +33.16% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 116.70 ± 0% +47.85% (p=0.002 n=6)
RandomPfxSize/1_000 100.7 ± 2% 168.1 ± 1% +66.93% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 97.72 ± 0% +31.86% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 156.60 ± 0% +85.68% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 146.30 ± 0% +93.52% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 100.30 ± 0% +68.32% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 74.51 ± 0% +43.21% (p=0.002 n=6)
geomean 67.56 106.1 +57.00%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ netipds/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.30 ± 2% 74.18 ± 3% -29.55% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 68.94 ± 0% -17.89% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 67.66 ± 0% +19.29% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 66.91 ± 0% +35.09% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 65.35 ± 0% +52.33% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 63.72 ± 0% +60.34% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 61.89 ± 3% -25.09% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 51.37 ± 0% -10.46% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 48.25 ± 0% -33.07% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 47.57 ± 0% -26.98% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 46.51 ± 0% -11.31% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 45.66 ± 0% -1.72% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 100.20 ± 2% +19.66% (p=0.002 n=6)
RandomPfx6Size/10_000 101.40 ± 0% 94.28 ± 0% -7.02% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 87.64 ± 0% +22.25% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 85.90 ± 0% +23.81% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 84.11 ± 0% +16.25% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 83.23 ± 0% +5.45% (p=0.002 n=6)
RandomPfxSize/1_000 100.70 ± 2% 74.90 ± 3% -25.62% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 69.40 ± 0% -6.36% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 64.29 ± 0% -23.77% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 61.55 ± 0% -18.58% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 57.42 ± 0% -3.64% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 53.93 ± 0% +3.65% (p=0.002 n=6)
geomean 67.56 66.04 -2.25%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ critbitgo/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.3 ± 2% 119.7 ± 2% +13.68% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 114.80 ± 0% +36.73% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 114.40 ± 0% +101.69% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 114.40 ± 0% +130.97% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 114.40 ± 0% +166.67% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 114.40 ± 0% +187.87% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 116.40 ± 2% +40.89% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 112.40 ± 0% +95.92% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 112.00 ± 0% +55.36% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 112.00 ± 0% +71.91% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 112.00 ± 0% +113.58% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 112.00 ± 0% +141.07% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 132.40 ± 2% +58.11% (p=0.002 n=6)
RandomPfx6Size/10_000 101.4 ± 0% 128.4 ± 0% +26.63% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 128.00 ± 0% +78.55% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 128.00 ± 0% +84.49% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 128.00 ± 0% +76.92% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 128.00 ± 0% +62.17% (p=0.002 n=6)
RandomPfxSize/1_000 100.7 ± 2% 119.8 ± 2% +18.97% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 115.60 ± 0% +55.98% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 115.30 ± 0% +36.71% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 115.20 ± 0% +52.38% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 115.20 ± 0% +93.32% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 115.20 ± 0% +121.41% (p=0.002 n=6)
geomean 67.56 118.1 +74.78%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ lpmtrie/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.3 ± 2% 215.6 ± 5% +104.75% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 210.50 ± 5% +150.71% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 209.90 ± 5% +270.06% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 209.20 ± 5% +322.37% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 207.90 ± 7% +384.62% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 205.00 ± 7% +415.85% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 205.50 ± 8% +148.73% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 186.70 ± 9% +225.43% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 179.60 ± 9% +149.13% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 178.50 ± 10% +173.98% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 176.80 ± 10% +237.15% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 175.50 ± 10% +277.74% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 228.00 ± 8% +172.27% (p=0.002 n=6)
RandomPfx6Size/10_000 101.4 ± 0% 222.5 ± 8% +119.43% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 213.90 ± 9% +198.37% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 210.50 ± 9% +203.40% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 206.70 ± 9% +185.69% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 204.90 ± 9% +159.60% (p=0.002 n=6)
RandomPfxSize/1_000 100.7 ± 2% 215.3 ± 5% +113.80% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 210.30 ± 5% +183.77% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 203.50 ± 7% +141.29% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 198.70 ± 8% +162.83% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 189.90 ± 9% +218.68% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 181.40 ± 10% +248.65% (p=0.002 n=6)
geomean 67.56 201.4 +198.08%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/size.bm │ kentik-patricia/size.bm │
│ bytes/route │ bytes/route vs base │
Tier1PfxSize/1_000 105.3 ± 2% 145.5 ± 1% +38.18% (p=0.002 n=6)
Tier1PfxSize/10_000 83.96 ± 0% 200.30 ± 0% +138.57% (p=0.002 n=6)
Tier1PfxSize/100_000 56.72 ± 0% 163.80 ± 0% +188.79% (p=0.002 n=6)
Tier1PfxSize/200_000 49.53 ± 0% 164.00 ± 0% +231.11% (p=0.002 n=6)
Tier1PfxSize/500_000 42.90 ± 0% 144.20 ± 0% +236.13% (p=0.002 n=6)
Tier1PfxSize/1_000_000 39.74 ± 0% 144.50 ± 0% +263.61% (p=0.002 n=6)
RandomPfx4Size/1_000 82.62 ± 2% 140.90 ± 1% +70.54% (p=0.002 n=6)
RandomPfx4Size/10_000 57.37 ± 0% 109.60 ± 0% +91.04% (p=0.002 n=6)
RandomPfx4Size/100_000 72.09 ± 0% 139.90 ± 0% +94.06% (p=0.002 n=6)
RandomPfx4Size/200_000 65.15 ± 0% 139.80 ± 0% +114.58% (p=0.002 n=6)
RandomPfx4Size/500_000 52.44 ± 0% 139.80 ± 0% +166.59% (p=0.002 n=6)
RandomPfx4Size/1_000_000 46.46 ± 0% 139.60 ± 0% +200.47% (p=0.002 n=6)
RandomPfx6Size/1_000 83.74 ± 2% 157.30 ± 1% +87.84% (p=0.002 n=6)
RandomPfx6Size/10_000 101.4 ± 0% 201.4 ± 0% +98.62% (p=0.002 n=6)
RandomPfx6Size/100_000 71.69 ± 0% 160.80 ± 0% +124.30% (p=0.002 n=6)
RandomPfx6Size/200_000 69.38 ± 0% 160.80 ± 0% +131.77% (p=0.002 n=6)
RandomPfx6Size/500_000 72.35 ± 0% 156.50 ± 0% +116.31% (p=0.002 n=6)
RandomPfx6Size/1_000_000 78.93 ± 0% 156.30 ± 0% +98.02% (p=0.002 n=6)
RandomPfxSize/1_000 100.7 ± 2% 144.7 ± 1% +43.69% (p=0.002 n=6)
RandomPfxSize/10_000 74.11 ± 0% 140.20 ± 0% +89.18% (p=0.002 n=6)
RandomPfxSize/100_000 84.34 ± 0% 180.00 ± 0% +113.42% (p=0.002 n=6)
RandomPfxSize/200_000 75.60 ± 0% 180.00 ± 0% +138.10% (p=0.002 n=6)
RandomPfxSize/500_000 59.59 ± 0% 144.00 ± 0% +141.65% (p=0.002 n=6)
RandomPfxSize/1_000_000 52.03 ± 0% 144.00 ± 0% +176.76% (p=0.002 n=6)
geomean 67.56 152.8 +126.18%
update, insert/delete
bart.Lite is the fastest algorithm for updates.
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ lite/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 167.8n ± 2% -17.11% (p=0.002 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 117.9n ± 2% -26.43% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 161.7n ± 9% -33.53% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 187.5n ± 5% -29.09% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 125.6n ± 4% -11.83% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 75.39n ± 4% -13.37% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 170.1n ± 8% -22.31% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 203.6n ± 11% -16.99% (p=0.002 n=6)
geomean 185.3n 145.1n -21.68%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ fast/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 309.8n ± 3% +52.99% (p=0.002 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 219.5n ± 1% +36.97% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 346.1n ± 8% +42.31% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 392.7n ± 7% +48.45% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 253.3n ± 4% +77.85% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 139.25n ± 4% +60.03% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 350.8n ± 19% +60.22% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 322.2n ± 361% +31.40% (p=0.002 n=6)
geomean 185.3n 279.1n +50.65%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ netipds/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 209.1n ± 1% +3.26% (p=0.026 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 237.4n ± 3% +48.14% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 316.2n ± 2% +30.04% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 415.5n ± 4% +57.09% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 123.8n ± 4% -13.13% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 165.15n ± 3% +89.79% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 293.8n ± 3% +34.19% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 441.2n ± 5% +79.91% (p=0.002 n=6)
geomean 185.3n 253.9n +37.04%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ critbitgo/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 259.3n ± 2% +28.05% (p=0.002 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 333.3n ± 3% +108.02% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 524.8n ± 5% +115.81% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 720.4n ± 10% +172.38% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 132.4n ± 2% -7.06% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 175.50n ± 4% +101.69% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 363.3n ± 240% +65.93% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 447.6n ± 2% +82.57% (p=0.002 n=6)
geomean 185.3n 324.7n +75.24%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ lpmtrie/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 378.5n ± 1% +86.89% (p=0.002 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 401.4n ± 2% +150.51% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 662.1n ± 3% +172.25% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 788.6n ± 4% +198.15% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 126.4n ± 4% -11.30% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 185.60n ± 2% +113.30% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 495.5n ± 2% +126.31% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 641.0n ± 3% +161.44% (p=0.002 n=6)
geomean 185.3n 394.9n +113.11%
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
│ bart/update.bm │ kentik-patricia/update.bm │
│ sec/route │ sec/route vs base │
InsertRandomPfxs/1_000 202.5n ± 4% 256.6n ± 2% +26.72% (p=0.002 n=6)
InsertRandomPfxs/10_000 160.2n ± 1% 325.8n ± 1% +103.31% (p=0.002 n=6)
InsertRandomPfxs/100_000 243.2n ± 9% 541.5n ± 2% +122.68% (p=0.002 n=6)
InsertRandomPfxs/200_000 264.5n ± 21% 4380.5n ± 84% +1556.14% (p=0.002 n=6)
DeleteRandomPfxs/1_000 142.4n ± 4% 259.8n ± 15% +82.34% (p=0.002 n=6)
DeleteRandomPfxs/10_000 87.01n ± 5% 302.35n ± 846% +247.47% (p=0.002 n=6)
DeleteRandomPfxs/100_000 218.9n ± 7% 655.4n ± 589% +199.34% (p=0.002 n=6)
DeleteRandomPfxs/200_000 245.2n ± 23% 785.8n ± 2% +220.45% (p=0.002 n=6)
geomean 185.3n 547.1n +195.25%