Skip to content

gaissmai/iprbench

Repository files navigation

iprbench

comparing benchmarks for some golang IP routing table implementations:

	github.com/gaissmai/bart
	github.com/tailscale/art
	github.com/aromatt/netipds
	github.com/k-sone/critbitgo
	github.com/Asphaltt/lpmtrie
	github.com/yl2chen/cidranger
	github.com/gaissmai/cidrtree
	github.com/phemmer/go-iptrie 
	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

  $ # set the proper cpu feature flags, e.g.
  $ export GOAMD64='v2'

  $ make dep
  $ make -B all   # takes some time!

lpm (longest-prefix-match)

bart is by far the fastest software algorithm for IP-address longest-prefix-match.

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │              art/lpm.bm               │
                                     │    sec/op    │    sec/op     vs base                 │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   45.19n ± 17%  +175.80% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   61.20n ±  7%  +113.19% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   28.77n ±  1%   +54.55% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   35.39n ± 21%   +21.72% (p=0.001 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%   44.90n ±  1%  +171.41% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   46.02n ±  2%  +139.22% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   28.79n ±  1%   +73.54% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%   28.93n ±  7%   +50.44% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   45.02n ±  1%  +147.50% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   46.58n ±  3%  +141.97% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   28.79n ±  1%   +58.51% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   28.94n ±  3%   +50.22% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   49.26n ± 10%  +230.97% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   50.01n ±  5%   +94.50% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   29.06n ±  1%   +58.62% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   32.95n ±  6%   +28.16% (p=0.000 n=20)
geomean                                19.83n         38.13n         +92.31%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │            netipds/lpm.bm             │
                                     │    sec/op    │    sec/op     vs base                 │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   46.04n ± 14%  +181.02% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   61.17n ± 23%  +113.12% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   51.22n ±  5%  +175.13% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   64.70n ± 20%  +122.57% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%   28.68n ±  5%   +73.35% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   31.94n ±  6%   +66.03% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   29.36n ±  6%   +77.00% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%   31.95n ± 15%   +66.17% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   34.57n ±  5%   +90.02% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   37.29n ±  6%   +93.69% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   36.95n ±  5%  +103.50% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   43.38n ± 15%  +125.15% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   36.89n ± 14%  +147.87% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   45.32n ± 12%   +76.25% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   41.85n ±  1%  +128.44% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   49.30n ± 13%   +91.73% (p=0.000 n=20)
geomean                                19.83n         40.72n        +105.38%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │            critbitgo/lpm.bm             │
                                     │    sec/op    │    sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   139.90n ±  2%   +753.83% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   202.55n ±  7%   +605.63% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   614.45n ± 20%  +3200.83% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   475.80n ± 13%  +1536.74% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%    82.08n ±  4%   +396.10% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   103.70n ±  2%   +438.98% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   137.10n ± 14%   +726.40% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%   151.55n ± 12%   +688.09% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%    95.50n ±  4%   +425.01% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   113.35n ±  5%   +488.83% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   246.70n ± 14%  +1258.48% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   205.60n ± 14%   +967.22% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   109.80n ±  4%   +637.66% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   130.00n ±  3%   +405.64% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   449.95n ± 18%  +2356.06% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   329.25n ± 14%  +1180.63% (p=0.000 n=20)
geomean                                19.83n          183.8n         +827.13%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │             lpmtrie/lpm.bm              │
                                     │    sec/op    │    sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   272.95n ±  7%  +1565.85% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   318.30n ± 14%  +1008.87% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   258.00n ±  7%  +1285.98% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   235.90n ± 15%   +711.49% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%   132.30n ±  5%   +699.64% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   122.55n ± 24%   +536.95% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   114.70n ± 16%   +591.38% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%    95.12n ± 37%   +394.62% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   153.25n ± 13%   +742.50% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   141.30n ±  5%   +634.03% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   163.10n ± 11%   +798.13% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   135.75n ±  6%   +604.65% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   196.15n ±  5%  +1217.77% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   187.50n ±  3%   +629.29% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   196.20n ±  4%   +970.96% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   189.90n ±  5%   +638.62% (p=0.000 n=20)
geomean                                19.83n          172.5n         +769.97%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │            cidranger/lpm.bm             │
                                     │    sec/op    │    sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   252.85n ± 24%  +1443.18% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   271.10n ± 29%   +844.43% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   286.55n ±  5%  +1439.35% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   291.70n ± 18%   +903.44% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%   116.45n ±  9%   +603.84% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   156.20n ± 12%   +711.85% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   112.05n ±  7%   +575.41% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%   141.65n ±  9%   +636.61% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   155.40n ±  9%   +754.32% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   185.20n ±  6%   +862.08% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   152.65n ±  7%   +740.58% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   180.80n ±  6%   +838.49% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   155.55n ± 23%   +945.01% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   225.40n ±  4%   +776.70% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   191.55n ±  2%   +945.58% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   220.45n ±  6%   +757.45% (p=0.000 n=20)
geomean                                19.83n          185.4n         +834.94%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │             cidrtree/lpm.bm              │
                                     │    sec/op    │     sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%    771.75n ± 12%  +4610.10% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%    954.40n ± 15%  +3224.86% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   1260.50n ± 18%  +6671.42% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   1298.00n ± 10%  +4365.08% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%    345.05n ± 21%  +1985.52% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%    328.35n ± 19%  +1606.60% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%    479.80n ± 16%  +2792.10% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%    409.70n ± 12%  +2030.53% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%    537.40n ± 11%  +2854.37% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%    559.55n ± 11%  +2806.75% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%    611.45n ± 22%  +3267.02% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%    673.05n ± 19%  +3393.64% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%    586.05n ± 23%  +3837.19% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%    683.25n ± 20%  +2557.53% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%    843.90n ± 19%  +4506.44% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   1058.00n ± 13%  +4015.13% (p=0.000 n=20)
geomean                                19.83n           656.4n        +3210.44%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │            go-iptrie/lpm.bm             │
                                     │    sec/op    │    sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   227.70n ± 11%  +1289.69% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   211.10n ± 27%   +635.41% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   246.15n ±  3%  +1222.32% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   207.75n ±  9%   +614.65% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%   115.95n ±  3%   +600.82% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%   103.65n ±  7%   +438.72% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%   112.25n ±  3%   +576.61% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%   105.25n ±  6%   +447.32% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   142.20n ±  2%   +681.75% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   134.15n ±  6%   +596.88% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%   141.15n ±  1%   +677.26% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   125.90n ±  7%   +553.52% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   162.25n ±  8%   +990.02% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   160.75n ±  4%   +525.24% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   175.65n ±  5%   +858.79% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   162.35n ±  6%   +531.47% (p=0.000 n=20)
geomean                                19.83n          152.8n         +670.46%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                                     │ bart/lpm.bm  │         kentik-patricia/lpm.bm          │
                                     │    sec/op    │    sec/op      vs base                  │
LpmTier1Pfxs/RandomMatchIP4            16.38n ±  5%   181.05n ±  9%  +1004.97% (p=0.000 n=20)
LpmTier1Pfxs/RandomMatchIP6            28.70n ± 30%   259.65n ± 22%   +804.55% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP4             18.61n ±  0%   143.75n ±  5%   +672.23% (p=0.000 n=20)
LpmTier1Pfxs/RandomMissIP6             29.07n ± 36%   166.80n ± 13%   +473.79% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP4     16.54n ±  0%    81.81n ±  8%   +394.44% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMatchIP6     19.24n ±  0%    99.82n ± 16%   +418.81% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP4      16.59n ±  9%    68.03n ±  5%   +310.07% (p=0.000 n=20)
LpmRandomPfxs/1_000/RandomMissIP6      19.23n ±  0%    78.61n ± 11%   +308.81% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP4    18.19n ±  0%   105.90n ±  7%   +482.19% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMatchIP6    19.25n ±  0%   124.70n ±  3%   +547.79% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP4     18.16n ±  0%    93.60n ±  4%   +415.45% (p=0.000 n=20)
LpmRandomPfxs/10_000/RandomMissIP6     19.27n ± 33%   108.40n ±  4%   +462.68% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP4   14.88n ± 41%   134.00n ±  8%   +800.24% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMatchIP6   25.71n ±  0%   153.60n ±  3%   +497.43% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP4    18.32n ± 39%   109.45n ±  5%   +497.43% (p=0.000 n=20)
LpmRandomPfxs/100_000/RandomMissIP6    25.71n ±  0%   136.70n ±  6%   +431.70% (p=0.000 n=20)
geomean                                19.83n          120.7n         +508.78%

size of the routing tables

bart has two orders of magnitude lower memory consumption compared to art and becomes more efficient the more prefixes are stored in the table.

For art and cidranger no benchmarks are made for 500_000 and 1_000_000, with art the memory consumption is too high and with cidranger the insert takes too long.

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │               art/size.bm               │
                         │ bytes/route  │ bytes/route   vs base                   │
Tier1PfxSize/1_000           104.1 ± 2%    7591.0 ± 0%  +7192.03% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   4889.00 ± 0%  +6327.82% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   1669.00 ± 0%  +3953.92% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   1098.00 ± 0%  +3242.47% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%
Tier1PfxSize/1_000_000       21.39 ± 0%
RandomPfx4Size/1_000         74.64 ± 3%   5259.00 ± 0%  +6945.82% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   4060.00 ± 0%  +8312.76% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   3938.00 ± 0%  +6510.71% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   3476.00 ± 0%  +6519.69% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%
RandomPfx4Size/1_000_000     31.83 ± 0%
RandomPfx6Size/1_000         82.67 ± 2%   6761.00 ± 0%  +8078.30% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   7333.00 ± 0%  +7316.81% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   5708.00 ± 0%  +8345.04% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   5526.00 ± 0%  +8406.77% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%
RandomPfx6Size/1_000_000     73.74 ± 0%
RandomPfxSize/1_000          98.98 ± 2%   7538.00 ± 0%  +7515.68% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   6058.00 ± 0%  +8386.97% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   5300.00 ± 0%  +6824.48% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   4586.00 ± 0%  +6902.60% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%
RandomPfxSize/1_000_000      39.50 ± 0%
geomean                      56.09        4.450Ki       +6731.41%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │           netipds/size.bm           │
                         │ bytes/route  │ bytes/route  vs base                │
Tier1PfxSize/1_000          104.10 ± 2%    74.06 ± 3%   -28.86% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%    68.92 ± 0%    -9.39% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%    67.65 ± 0%   +64.32% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%    66.91 ± 0%  +103.68% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%    65.35 ± 0%  +159.43% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%    63.72 ± 0%  +197.90% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%    61.70 ± 3%   -17.34% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%    51.35 ± 0%    +6.40% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%    48.25 ± 0%   -19.00% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%    47.57 ± 0%    -9.41% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%    46.51 ± 0%   +22.91% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%    45.66 ± 0%   +43.45% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%   100.00 ± 2%   +20.96% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%    94.26 ± 0%    -4.66% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%    87.64 ± 0%   +29.66% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%    85.90 ± 0%   +32.24% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%    84.11 ± 0%   +24.39% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%    83.23 ± 0%   +12.87% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%    74.70 ± 3%   -24.53% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%    69.38 ± 0%    -2.80% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%    64.29 ± 0%   -16.00% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%    61.55 ± 0%    -6.02% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%    57.42 ± 0%   +19.75% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%    53.93 ± 0%   +36.53% (p=0.002 n=6)
geomean                      56.09         66.01        +17.69%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │          critbitgo/size.bm          │
                         │ bytes/route  │ bytes/route  vs base                │
Tier1PfxSize/1_000           104.1 ± 2%    119.6 ± 2%   +14.89% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   114.80 ± 0%   +50.93% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   114.40 ± 0%  +177.87% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   114.40 ± 0%  +248.25% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%   114.40 ± 0%  +354.15% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%   114.40 ± 0%  +434.83% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%   116.30 ± 2%   +55.81% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   112.40 ± 0%  +132.91% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   112.00 ± 0%   +88.01% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   112.00 ± 0%  +113.29% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%   112.00 ± 0%  +195.98% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%   112.00 ± 0%  +251.87% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%   132.20 ± 1%   +59.91% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   128.40 ± 0%   +29.87% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   128.00 ± 0%   +89.38% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   128.00 ± 0%   +97.04% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%   128.00 ± 0%   +89.29% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%   128.00 ± 0%   +73.58% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%   119.60 ± 2%   +20.83% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   115.60 ± 0%   +61.95% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   115.30 ± 0%   +50.64% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   115.20 ± 0%   +75.90% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%   115.20 ± 0%  +140.25% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%   115.20 ± 0%  +191.65% (p=0.002 n=6)
geomean                      56.09         118.1       +110.48%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │           lpmtrie/size.bm            │
                         │ bytes/route  │ bytes/route   vs base                │
Tier1PfxSize/1_000           104.1 ± 2%    215.5 ±  5%  +107.01% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   210.50 ±  5%  +176.76% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   209.90 ±  5%  +409.84% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   209.20 ±  5%  +536.83% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%   207.90 ±  7%  +725.33% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%   205.00 ±  7%  +858.39% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%   205.30 ±  8%  +175.05% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   186.60 ±  9%  +286.66% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   179.60 ±  9%  +201.49% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   178.50 ± 10%  +239.94% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%   176.80 ± 10%  +367.23% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%   175.50 ± 10%  +451.37% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%   227.80 ±  8%  +175.55% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   222.50 ±  8%  +125.04% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   213.90 ±  9%  +216.47% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   210.50 ±  9%  +224.05% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%   206.70 ±  9%  +205.68% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%   204.90 ±  9%  +177.87% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%   215.10 ±  5%  +117.32% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   210.30 ±  5%  +194.62% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   203.50 ±  7%  +165.87% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   198.70 ±  8%  +203.41% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%   189.90 ±  9%  +296.04% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%   181.40 ± 10%  +359.24% (p=0.002 n=6)
geomean                      56.09         201.3        +258.97%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │           cidranger/size.bm            │
                         │ bytes/route  │ bytes/route  vs base                   │
Tier1PfxSize/1_000           104.1 ± 2%    539.7 ± 3%   +418.44% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   533.90 ± 3%   +601.95% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   527.20 ± 2%  +1180.54% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   522.20 ± 2%  +1489.65% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%
Tier1PfxSize/1_000_000       21.39 ± 0%
RandomPfx4Size/1_000         74.64 ± 3%   481.60 ± 3%   +545.23% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   433.10 ± 3%   +797.43% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   413.70 ± 3%   +594.48% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   409.10 ± 3%   +679.09% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%
RandomPfx4Size/1_000_000     31.83 ± 0%
RandomPfx6Size/1_000         82.67 ± 2%   595.30 ± 0%   +620.09% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   581.00 ± 0%   +487.64% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   547.20 ± 0%   +709.59% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   538.10 ± 0%   +728.36% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%
RandomPfx6Size/1_000_000     73.74 ± 0%
RandomPfxSize/1_000          98.98 ± 2%   540.40 ± 2%   +445.97% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   528.20 ± 2%   +639.98% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   495.50 ± 2%   +547.37% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   477.60 ± 2%   +629.27% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%
RandomPfxSize/1_000_000      39.50 ± 0%
geomean                      56.09         507.3        +660.66%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │          cidrtree/size.bm           │
                         │ bytes/route  │ bytes/route  vs base                │
Tier1PfxSize/1_000          104.10 ± 2%    69.39 ± 3%   -33.34% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%    64.39 ± 0%   -15.34% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%    64.04 ± 0%   +55.55% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%    64.02 ± 0%   +94.89% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%    64.01 ± 0%  +154.11% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%    64.00 ± 0%  +199.21% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%    68.29 ± 3%    -8.51% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%    64.39 ± 0%   +33.42% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%    64.04 ± 0%    +7.50% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%    64.02 ± 0%   +21.92% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%    64.01 ± 0%   +69.16% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%    64.00 ± 0%  +101.07% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%    68.29 ± 3%   -17.39% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%    64.39 ± 0%   -34.87% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%    64.04 ± 0%    -5.25% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%    64.02 ± 0%    -1.45% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%    64.01 ± 0%    -5.34% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%    64.00 ± 0%   -13.21% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%    68.29 ± 3%   -31.01% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%    64.39 ± 0%    -9.79% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%    64.04 ± 0%   -16.33% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%    64.02 ± 0%    -2.24% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%    64.01 ± 0%   +33.49% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%    64.00 ± 0%   +62.03% (p=0.002 n=6)
geomean                      56.09         64.82        +15.56%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │          go-iptrie/size.bm          │
                         │ bytes/route  │ bytes/route  vs base                │
Tier1PfxSize/1_000           104.1 ± 2%    165.1 ± 1%   +58.60% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   159.90 ± 0%  +110.23% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   157.20 ± 0%  +281.83% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   155.40 ± 0%  +373.06% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%   151.70 ± 0%  +502.22% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%   147.80 ± 0%  +590.98% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%   147.90 ± 1%   +98.15% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   127.80 ± 0%  +164.82% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   120.60 ± 0%  +102.45% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   118.90 ± 0%  +126.43% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%   116.30 ± 0%  +207.35% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%   114.10 ± 0%  +258.47% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%   163.90 ± 1%   +98.26% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   156.80 ± 0%   +58.59% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   146.00 ± 0%  +116.01% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   143.20 ± 0%  +120.44% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%   140.20 ± 0%  +107.34% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%   138.70 ± 0%   +88.09% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%   163.60 ± 1%   +65.29% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   157.00 ± 0%  +119.95% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   145.10 ± 0%   +89.57% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   138.70 ± 0%  +111.79% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%   128.80 ± 0%  +168.61% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%   120.50 ± 0%  +205.06% (p=0.002 n=6)
geomean                      56.09         141.8       +152.79%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/size.bm │       kentik-patricia/size.bm       │
                         │ bytes/route  │ bytes/route  vs base                │
Tier1PfxSize/1_000           104.1 ± 2%    145.4 ± 1%   +39.67% (p=0.002 n=6)
Tier1PfxSize/10_000          76.06 ± 0%   200.20 ± 0%  +163.21% (p=0.002 n=6)
Tier1PfxSize/100_000         41.17 ± 0%   164.00 ± 0%  +298.35% (p=0.002 n=6)
Tier1PfxSize/200_000         32.85 ± 0%   164.00 ± 0%  +399.24% (p=0.002 n=6)
Tier1PfxSize/500_000         25.19 ± 0%   144.50 ± 0%  +473.64% (p=0.002 n=6)
Tier1PfxSize/1_000_000       21.39 ± 0%   144.50 ± 0%  +575.55% (p=0.002 n=6)
RandomPfx4Size/1_000         74.64 ± 3%   140.70 ± 1%   +88.50% (p=0.002 n=6)
RandomPfx4Size/10_000        48.26 ± 0%   109.60 ± 0%  +127.10% (p=0.002 n=6)
RandomPfx4Size/100_000       59.57 ± 0%   139.80 ± 0%  +134.68% (p=0.002 n=6)
RandomPfx4Size/200_000       52.51 ± 0%   139.80 ± 0%  +166.24% (p=0.002 n=6)
RandomPfx4Size/500_000       37.84 ± 0%   139.70 ± 0%  +269.19% (p=0.002 n=6)
RandomPfx4Size/1_000_000     31.83 ± 0%   139.80 ± 0%  +339.21% (p=0.002 n=6)
RandomPfx6Size/1_000         82.67 ± 2%   157.10 ± 1%   +90.03% (p=0.002 n=6)
RandomPfx6Size/10_000        98.87 ± 0%   201.30 ± 0%  +103.60% (p=0.002 n=6)
RandomPfx6Size/100_000       67.59 ± 0%   160.80 ± 0%  +137.91% (p=0.002 n=6)
RandomPfx6Size/200_000       64.96 ± 0%   160.80 ± 0%  +147.54% (p=0.002 n=6)
RandomPfx6Size/500_000       67.62 ± 0%   156.30 ± 0%  +131.14% (p=0.002 n=6)
RandomPfx6Size/1_000_000     73.74 ± 0%   156.50 ± 0%  +112.23% (p=0.002 n=6)
RandomPfxSize/1_000          98.98 ± 2%   144.50 ± 1%   +45.99% (p=0.002 n=6)
RandomPfxSize/10_000         71.38 ± 0%   140.20 ± 0%   +96.41% (p=0.002 n=6)
RandomPfxSize/100_000        76.54 ± 0%   180.00 ± 0%  +135.17% (p=0.002 n=6)
RandomPfxSize/200_000        65.49 ± 0%   180.00 ± 0%  +174.85% (p=0.002 n=6)
RandomPfxSize/500_000        47.95 ± 0%   144.00 ± 0%  +200.31% (p=0.002 n=6)
RandomPfxSize/1_000_000      39.50 ± 0%   144.00 ± 0%  +264.56% (p=0.002 n=6)
geomean                      56.09         152.8       +172.40%

update, insert/delete

bart is by far the fastest algorithm for updates.

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │              art/update.bm              │
                         │   sec/route    │   sec/route     vs base                 │
InsertRandomPfxs/1_000       30.43n ±  3%    296.85n ±  2%   +875.52% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%    415.30n ±  3%  +1036.56% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   1463.50n ± 11%  +1816.33% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    1275.5n ± 40%  +1002.42% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%     16.43n ±  1%     -1.94% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%     16.23n ±  0%     -3.39% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%     16.69n ±  0%     -2.25% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%     17.80n ±  0%     +0.96% (p=0.002 n=6)
geomean                      30.91n           107.8n         +248.78%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │           netipds/update.bm           │
                         │   sec/route    │  sec/route    vs base                 │
InsertRandomPfxs/1_000       30.43n ±  3%   152.10n ± 1%   +399.84% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   215.00n ± 0%   +488.40% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   331.20n ± 2%   +333.68% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    434.8n ± 1%   +275.76% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%   133.45n ± 0%   +696.48% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%   190.15n ± 0%  +1031.51% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%   290.50n ± 1%  +1601.32% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%   389.00n ± 0%  +2107.09% (p=0.002 n=6)
geomean                      30.91n          246.2n        +696.62%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │         critbitgo/update.bm          │
                         │   sec/route    │  sec/route    vs base                │
InsertRandomPfxs/1_000       30.43n ±  3%   160.55n ± 3%  +427.60% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   233.35n ± 4%  +538.62% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   444.20n ± 4%  +481.64% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    586.7n ± 2%  +407.09% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%    67.66n ± 1%  +303.79% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%    70.05n ± 0%  +316.84% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%    72.76n ± 1%  +326.12% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%    77.56n ± 3%  +340.03% (p=0.002 n=6)
geomean                      30.91n          150.3n       +386.47%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │           lpmtrie/update.bm           │
                         │   sec/route    │  sec/route    vs base                 │
InsertRandomPfxs/1_000       30.43n ±  3%   356.10n ± 3%  +1070.23% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   470.30n ± 3%  +1187.08% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   867.05n ± 4%  +1035.33% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%   1100.5n ± 4%   +851.17% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%    72.61n ± 0%   +333.36% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%   131.65n ± 1%   +683.40% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%   294.55n ± 0%  +1625.04% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%   419.50n ± 1%  +2280.14% (p=0.002 n=6)
geomean                      30.91n          342.4n       +1007.74%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │           cidranger/update.bm           │
                         │   sec/route    │   sec/route    vs base                  │
InsertRandomPfxs/1_000       30.43n ±  3%   4471.00n ± 3%  +14592.74% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   6153.50n ± 3%  +16740.45% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   8694.00n ± 3%  +11284.05% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    9740.0n ± 5%   +8318.32% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%     86.48n ± 3%    +416.11% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%     88.25n ± 2%    +425.17% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%    110.35n ± 1%    +546.27% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%    152.55n ± 0%    +765.53% (p=0.002 n=6)
geomean                      30.91n           860.0n        +2682.69%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │           cidrtree/update.bm           │
                         │   sec/route    │   sec/route    vs base                 │
InsertRandomPfxs/1_000       30.43n ±  3%   1232.50n ± 3%  +3950.28% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   1829.00n ± 1%  +4905.47% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   2749.50n ± 2%  +3500.24% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    3247.5n ± 3%  +2706.83% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%     14.68n ± 0%    -12.38% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%     14.94n ± 0%    -11.07% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%     22.20n ± 4%    +30.01% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%     83.23n ± 5%   +372.26% (p=0.002 n=6)
geomean                      30.91n           231.2n        +648.02%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │         go-iptrie/update.bm          │
                         │   sec/route    │  sec/route    vs base                │
InsertRandomPfxs/1_000       30.43n ±  3%   184.50n ± 6%  +506.31% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   260.30n ± 3%  +612.37% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   490.85n ± 8%  +542.73% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    616.1n ± 6%  +432.50% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%    18.55n ± 1%   +10.74% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%    18.65n ± 2%   +10.98% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%    19.78n ± 2%   +15.84% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%    21.07n ± 3%   +19.55% (p=0.002 n=6)
geomean                      30.91n          82.25n       +166.13%

goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
                         │ bart/update.bm │      kentik-patricia/update.bm       │
                         │   sec/route    │  sec/route    vs base                │
InsertRandomPfxs/1_000       30.43n ±  3%   190.60n ± 1%  +526.36% (p=0.002 n=6)
InsertRandomPfxs/10_000      36.54n ±  3%   286.70n ± 0%  +684.62% (p=0.002 n=6)
InsertRandomPfxs/100_000     76.37n ± 10%   559.15n ± 0%  +632.16% (p=0.002 n=6)
InsertRandomPfxs/200_000     115.7n ±  1%    704.1n ± 1%  +508.56% (p=0.002 n=6)
DeleteRandomPfxs/1_000       16.75n ±  0%    13.03n ± 0%   -22.23% (p=0.002 n=6)
DeleteRandomPfxs/10_000      16.80n ±  0%    15.05n ± 0%   -10.44% (p=0.002 n=6)
DeleteRandomPfxs/100_000     17.07n ±  1%    16.33n ± 0%    -4.36% (p=0.002 n=6)
DeleteRandomPfxs/200_000     17.62n ±  0%    19.04n ± 1%    +8.03% (p=0.002 n=6)
geomean                      30.91n          77.58n       +151.00%

About

benchmarks for some golang IP routing table implementations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •