Cytoscape.js GPU benchmarks

v4 (src/) vs v3 (v3/src/) · Mitata · times are per-iteration p50 · 2026-08-10 18:18 · d4ff0730 (v4) · Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz · node v24.18.0 · quick profile

Machine and provenance
CPUIntel(R) Core(TM) i9-9900K CPU @ 3.60GHz
Cores8 physical / 16 logical · 3.6 GHz base · 5 GHz max
Memory62.6 GiB
GPUCoffeeLake-S GT2 [UHD Graphics 630] i915
Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (8.0 GiB) amdgpu
OSFedora Linux 43 (Workstation Edition) · 6.19.14-200.fc43.x86_64 · x64
Nodev24.18.0 (v8 13.6.233.17-node.50)
Commitd4ff0730
bench(65.9): the executor sweep joins the report, publish and status pipeline
Machine id5cf3f79c
Median speedup (geo-mean) 19× 106 v3-vs-gpu comparisons
Biggest win 282791× sweep: edges() @ N=2k
v3 still ahead 0 comparisons
Total run time 7.5 min quick profile

Speedup overview v3 p50 ÷ gpu p50, log scale · right of the 1× line = gpu faster

sweep: edges() @ 2k
282791×
sweep: nodes() @ 2k
172527×
core: edges() @ 2k
93015×
core: nodes() @ 2k
51934×
sweep: elements() @ 2k
30881×
core: elements() @ 2k
20065×
compare: same() @ 2k
7910×
trav: predecessors() @ 2k
726×
trav: successors() @ 2k
725×
mut-bulk: hide + show @ 2k
280×
degree: nodes.totalDegree() @ 2k
163×
degree: nodes.maxDegree() @ 2k
141×
degree: node.degree() @ 2k
122×
mut-bulk: positions(obj) @ 2k
119×
mut-bulk: shift @ 2k
100×
mut-bulk: positions(fn) @ 2k
95×
algo: closenessCentrality (one root) @ 2k
73×
algo: closenessCentrality (one root) @ 500
70×
algo: dfs (whole graph) @ 500
62×
algo: bfs (whole graph) @ 2k
59×
algo: dfs (whole graph) @ 2k
59×
sweep: nodes(":selected") vs nodes({selected}) @ 2k
58×
algo: bfs (whole graph) @ 500
58×
algo: dijkstra + pathTo @ 2k
56×
mut-bulk: lock + unlock @ 2k
55×
algo: closenessCentrality (weighted, one root) @ 500
54×
algo: dijkstra + pathTo @ 500
51×
traverse: components() @ 2k
39×
algo: degreeCentralityNormalized @ 2k
38×
algo: degreeCentralityNormalized @ 500
37×
algo: tarjan SCC @ 2k
36×
sweep: selected nodes ($("node:selected") vs filter({group, selected})) @ 2k
35×
algo: tarjan SCC @ 500
34×
algo: degreeCentrality (one root) @ 2k
30×
algo: degreeCentrality (one root) @ 500
30×
core: id lookup ($("#id") vs $id()) @ 2k
27×
scn: select-all + fit (listeners on) @ 2k
26×
set: intersection() @ 2k
26×
set: difference() @ 2k
26×
algo: hopcroft-tarjan biconnected @ 500
25×
algo: kruskal @ 2k
25×
algo: hopcroft-tarjan biconnected @ 2k
25×
mut: position set @ 2k
25×
algo: kruskal @ 500
24×
trav: band roots() @ 2k
22×
algo: bellmanFord @ 500
21×
algo: bellmanFord @ 2k
20×
core: add + remove @ 2k
19×
scn: drag (select band of 100 + 8-step shift, position listener) @ 2k
16×
mut-bulk: data set @ 2k
14×
sweep: selected ($(":selected") vs filter({selected})) @ 2k
13×
core: selected ($(":selected") vs filter({selected})) @ 2k
13×
algo: betweennessCentrality (unweighted) @ 500
12×
algo: betweennessCentrality (unweighted) @ 2k
11×
sweep: all nodes ($("node") vs filter({group})) @ 2k
9.1×
algo: kMedoids @ 500
8.9×
algo: fuzzyCMeans @ 500
8.7×
algo: betweennessCentrality (weighted) @ 500
8.7×
scn: explore (expand 2-hop + select + fit) @ 2k
7.8×
core: collection() @ 2k
7.3×
mut-bulk: remove + re-add (256 nodes + cascade) @ 2k
6.8×
mut-bulk: select + unselect @ 2k
6.7×
scn: edit (remove + re-add 256 nodes + cascade, add/remove listeners) @ 2k
6.5×
traverse: incomers() @ 2k
6.1×
core: nodes ($("node") vs filter({group})) @ 2k
5.6×
algo: affinityPropagation @ 500
5.2×
algo: hierholzer (directed) @ 500
5.2×
traverse: outgoers() @ 2k
5.1×
compare: contains() @ 2k
5.0×
set: union() @ 2k
5.0×
trav: band neighborhood() @ 2k
4.8×
trav: incomers() @ 2k
4.8×
trav: outgoers() @ 2k
4.8×
mut: data set @ 2k
4.0×
traverse: neighborhood() @ 2k
3.9×
mut: select + unselect @ 2k
3.9×
trav: neighborhood() @ 2k
3.9×
algo: kMeans (fixed centroids) @ 500
3.9×
algo: aStar @ 500
3.6×
algo: aStar @ 2k
3.4×
algo: hierholzer (directed) @ 2k
3.0×
trav: band connectedNodes() @ 2k
2.7×
trav: closedNeighborhood() @ 2k
2.7×
traverse: connectedEdges() @ 2k
2.7×
trav: connectedEdges() @ 2k
2.5×
iter: map() @ 2k
2.5×
algo: hierarchicalClustering (threshold) @ 500
2.4×
json: element @ 2k
1.98×
iter: filter(fn) @ 2k
1.93×
algo: pageRank (20 iters) @ 500
1.87×
core: zoom set @ 2k
1.84×
scn: refresh (bulk data write + mapped labels + filter + fit, data listener) @ 2k
1.81×
sweep: filter(fn) @ 2k
1.70×
algo: closenessCentralityNormalized @ 500
1.67×
position: get @ 2k
1.64×
algo: floydWarshall @ 500
1.59×
trav: band sources() @ 2k
1.48×
trav: band connectedEdges() @ 2k
1.34×
core: pan() get (x32) @ 2k
1.26×
data: get @ 2k
1.19×
core: filter(fn) @ 2k
1.19×
core: getElementById() @ 2k
1.18×
core: extent() @ 2k
1.10×
algo: markovClustering @ 500
1.10×
iter: forEach() @ 2k
1.04×
algo: kargerStein @ 500
1.03×
10×100×1000×10000×100000×1000000×

Scaling speedup vs graph size

algorithms

group× @ N=500× @ N=2k
algo: bfs (whole graph)58×59×
algo: dfs (whole graph)62×59×
algo: dijkstra + pathTo51×56×
algo: aStar3.6×3.4×
algo: bellmanFord21×20×
algo: kruskal24×25×
algo: tarjan SCC34×36×
algo: hopcroft-tarjan biconnected25×25×
algo: hierholzer (directed)5.2×3.0×
algo: betweennessCentrality (unweighted)12×11×
algo: degreeCentralityNormalized37×38×
algo: closenessCentrality (one root)70×73×
algo: degreeCentrality (one root)30×30×
algo: pageRank (20 iters)1.87×
algo: closenessCentrality (weighted, one root)54×
algo: floydWarshall1.59×
algo: closenessCentralityNormalized1.67×
algo: markovClustering1.10×
algo: hierarchicalClustering (threshold)2.4×
algo: kMeans (fixed centroids)3.9×
algo: kMedoids8.9×
algo: fuzzyCMeans8.7×
algo: affinityPropagation5.2×
algo: kargerStein1.03×
algo: betweennessCentrality (weighted)8.7×

core+collection N=2,000 · 58.7 sv4 (gpu) v3

core: getElementById()
1.18×
core: id lookup ($("#id") vs $id())
27×
core: nodes()
51934×
core: edges()
93015×
core: elements()
20065×
core: nodes ($("node") vs filter({group}))
5.6×
core: selected ($(":selected") vs filter({selected}))
13×
core: filter(fn)
1.19×
core: collection()
7.3×
core: pan() get (x32)
1.26×
core: extent()
1.10×
core: add + remove
19×
core: zoom set
1.84×
traverse: neighborhood()
3.9×
traverse: connectedEdges()
2.7×
traverse: outgoers()
5.1×
traverse: incomers()
6.1×
traverse: components()
39×
degree: node.degree()
122×
degree: nodes.totalDegree()
163×
degree: nodes.maxDegree()
141×
data: get
1.19×
position: get
1.64×
json: element
1.98×
set: union()
5.0×
set: intersection()
26×
set: difference()
26×
iter: map()
2.5×
iter: forEach()
1.04×
iter: filter(fn)
1.93×
compare: same()
7910×
compare: contains()
5.0×
mut: data set
4.0×
mut: position set
25×
mut: select + unselect
3.9×
1 ns10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms
All stats (table view)
groupbenchp50avgp99minsamples
core: getElementById()v3 100 ns103 ns 155 ns96.4 ns 1657
core: getElementById()gpu 84.7 ns95.5 ns 177 ns82.2 ns 1792
core: id lookup ($("#id") vs $id())v3 2.06 µs2.48 µs 4.07 µs1.91 µs 63
core: id lookup ($("#id") vs $id())gpu 77.5 ns81.4 ns 258 ns74.7 ns 2099
core: nodes()v3 426 µs462 µs 1.21 ms421 µs 1510
core: nodes()gpu 8.21 ns9.01 ns 17.2 ns8.04 ns 18810
core: edges()v3 753 µs815 µs 1.64 ms739 µs 856
core: edges()gpu 8.10 ns8.71 ns 16.2 ns7.83 ns 19433
core: elements()v3 140 µs149 µs 257 µs136 µs 4693
core: elements()gpu 6.99 ns7.42 ns 17.1 ns6.63 ns 22902
core: nodes ($("node") vs filter({group}))v3 556 µs585 µs 1.26 ms531 µs 1191
core: nodes ($("node") vs filter({group}))gpu 100 µs109 µs 284 µs67.8 µs 6302
core: selected ($(":selected") vs filter({selected}))v3 339 µs359 µs 673 µs327 µs 1931
core: selected ($(":selected") vs filter({selected}))gpu 25.8 µs26.5 µs 26.6 µs25.4 µs 12
core: filter(fn)v3 417 µs445 µs 962 µs412 µs 1567
core: filter(fn)gpu 351 µs426 µs 1.78 ms345 µs 1629
core: collection()v3 493 ns611 ns 1.69 µs479 ns 272
core: collection()gpu 67.5 ns75.6 ns 312 ns65.9 ns 2231
core: pan() get (x32)v3 45.5 ns48.0 ns 85.0 ns43.5 ns 3499
core: pan() get (x32)gpu 36.1 ns38.0 ns 56.8 ns35.1 ns 4500
core: extent()v3 23.0 ns42.5 ns 137 ns21.7 ns 3937
core: extent()gpu 20.8 ns28.1 ns 110 ns19.6 ns 5932
core: add + removev3 133 µs136 µs 200 µs123 µs 5062
core: add + removegpu 7.09 µs7.91 µs 19.7 µs6.57 µs 79601
core: zoom setv3 1.21 µs1.26 µs 2.03 µs1.15 µs 131
core: zoom setgpu 657 ns684 ns 1.09 µs622 ns 236
traverse: neighborhood()v3 3.70 µs3.88 µs 5.25 µs3.36 µs 40
traverse: neighborhood()gpu 938 ns1.12 µs 2.35 µs902 ns 144
traverse: connectedEdges()v3 1.01 µs1.13 µs 2.05 µs971 ns 146
traverse: connectedEdges()gpu 378 ns431 ns 1.40 µs367 ns 389
traverse: outgoers()v3 2.30 µs2.49 µs 3.52 µs2.21 µs 64
traverse: outgoers()gpu 455 ns511 ns 1.32 µs432 ns 312
traverse: incomers()v3 2.60 µs2.69 µs 3.47 µs2.28 µs 57
traverse: incomers()gpu 424 ns439 ns 776 ns422 ns 364
traverse: components()v3 77.9 ms80.7 ms 88.1 ms74.4 ms 12
traverse: components()gpu 2.02 ms2.16 ms 3.47 ms1.96 ms 310
degree: node.degree()v3 3.39 µs3.75 µs 5.02 µs3.19 µs 42
degree: node.degree()gpu 27.9 ns29.5 ns 47.2 ns26.8 ns 5788
degree: nodes.totalDegree()v3 7.09 ms7.94 ms 12.5 ms6.84 ms 84
degree: nodes.totalDegree()gpu 43.6 µs44.8 µs 80.8 µs42.5 µs 15134
degree: nodes.maxDegree()v3 7.28 ms8.10 ms 12.9 ms6.89 ms 82
degree: nodes.maxDegree()gpu 51.5 µs52.9 µs 88.3 µs49.6 µs 13106
data: getv3 30.6 ns31.7 ns 50.8 ns30.2 ns 5390
data: getgpu 25.8 ns26.8 ns 39.1 ns24.7 ns 6392
position: getv3 34.4 ns36.1 ns 61.4 ns33.5 ns 4740
position: getgpu 20.9 ns24.8 ns 49.7 ns20.1 ns 6757
json: elementv3 301 ns396 ns 3.69 µs296 ns 413
json: elementgpu 152 ns160 ns 256 ns151 ns 1015
set: union()v3 90.7 µs101 µs 150 µs87.6 µs 6885
set: union()gpu 18.1 µs18.6 µs 18.3 µs17.7 µs 12
set: intersection()v3 91.1 µs100 µs 145 µs88.5 µs 6914
set: intersection()gpu 3.46 µs3.51 µs 4.03 µs3.38 µs 43
set: difference()v3 90.4 µs103 µs 164 µs87.4 µs 6683
set: difference()gpu 3.44 µs3.46 µs 3.72 µs3.35 µs 44
iter: map()v3 25.5 µs26.8 µs 29.6 µs25.3 µs 12
iter: map()gpu 10.3 µs10.9 µs 36.1 µs9.91 µs 62078
iter: forEach()v3 3.48 µs3.73 µs 3.62 µs3.43 µs 36
iter: forEach()gpu 3.34 µs3.38 µs 3.65 µs3.28 µs 45
iter: filter(fn)v3 244 µs253 µs 400 µs240 µs 2762
iter: filter(fn)gpu 127 µs133 µs 198 µs125 µs 5243
compare: same()v3 119 µs124 µs 201 µs115 µs 5685
compare: same()gpu 15.0 ns15.7 ns 26.9 ns14.6 ns 10872
compare: contains()v3 6.21 µs6.22 µs 6.34 µs6.12 µs 24
compare: contains()gpu 1.24 µs1.25 µs 1.39 µs1.22 µs 130
mut: data setv3 419 ns434 ns 675 ns408 ns 384
mut: data setgpu 106 ns112 ns 149 ns104 ns 1511
mut: position setv3 1.21 µs1.22 µs 1.34 µs1.18 µs 134
mut: position setgpu 48.6 ns52.9 ns 104 ns47.4 ns 3195
mut: select + unselectv3 2.62 µs2.75 µs 3.33 µs2.45 µs 57
mut: select + unselectgpu 665 ns706 ns 1.14 µs612 ns 684292

materializers N=2,000 · 16.6 sv4 (gpu) v3

sweep: nodes()
172527×
sweep: edges()
282791×
sweep: elements()
30881×
sweep: all nodes ($("node") vs filter({group}))
9.1×
sweep: selected ($(":selected") vs filter({selected}))
13×
sweep: selected nodes ($("node:selected") vs filter({group, selected}))
35×
sweep: nodes(":selected") vs nodes({selected})
58×
sweep: filter(fn)
1.70×
1 ns10 ns100 ns1 µs10 µs100 µs1 ms
All stats (table view)
groupbenchp50avgp99minsamples
sweep: nodes()v3 424 µs438 µs 751 µs418 µs 1599
sweep: nodes()gpu 2.46 ns2.51 ns 4.94 ns2.40 ns 65710
sweep: edges()v3 724 µs741 µs 878 µs700 µs 942
sweep: edges()gpu 2.56 ns2.64 ns 5.04 ns2.46 ns 62631
sweep: elements()v3 150 µs156 µs 240 µs147 µs 4478
sweep: elements()gpu 4.85 ns4.96 ns 8.84 ns4.65 ns 33893
sweep: all nodes ($("node") vs filter({group}))v3 535 µs563 µs 812 µs528 µs 1238
sweep: all nodes ($("node") vs filter({group}))gpu 58.9 µs73.5 µs 189 µs53.7 µs 9425
sweep: selected ($(":selected") vs filter({selected}))v3 346 µs356 µs 546 µs341 µs 1960
sweep: selected ($(":selected") vs filter({selected}))gpu 26.2 µs27.1 µs 28.8 µs26.0 µs 12
sweep: selected nodes ($("node:selected") vs filter({group, selected}))v3 329 µs330 µs 501 µs307 µs 2119
sweep: selected nodes ($("node:selected") vs filter({group, selected}))gpu 9.38 µs9.51 µs 9.85 µs9.27 µs 14
sweep: nodes(":selected") vs nodes({selected})v3 522 µs532 µs 689 µs517 µs 1314
sweep: nodes(":selected") vs nodes({selected})gpu 8.93 µs8.98 µs 9.30 µs8.85 µs 15
sweep: filter(fn)v3 421 µs435 µs 777 µs409 µs 1607
sweep: filter(fn)gpu 248 µs268 µs 634 µs243 µs 2586

mutators N=2,000 · 18.0 sv4 (gpu) v3

mut-bulk: select + unselect
6.7×
mut-bulk: hide + show
280×
mut-bulk: lock + unlock
55×
mut-bulk: positions(obj)
119×
mut-bulk: positions(fn)
95×
mut-bulk: shift
100×
mut-bulk: data set
14×
mut-bulk: remove + re-add (256 nodes + cascade)
6.8×
10 µs100 µs1 ms10 ms100 ms
All stats (table view)
groupbenchp50avgp99minsamples
mut-bulk: select + unselectv3 1.83 ms1.90 ms 3.22 ms1.78 ms 348
mut-bulk: select + unselectgpu 275 µs287 µs 519 µs268 µs 2441
mut-bulk: hide + showv3 59.5 ms67.9 ms 83.3 ms57.9 ms 12
mut-bulk: hide + showgpu 213 µs225 µs 724 µs204 µs 3076
mut-bulk: lock + unlockv3 2.14 ms2.17 ms 2.49 ms2.10 ms 311
mut-bulk: lock + unlockgpu 38.9 µs39.2 µs 40.5 µs38.1 µs 12
mut-bulk: positions(obj)v3 2.42 ms2.54 ms 4.14 ms2.36 ms 269
mut-bulk: positions(obj)gpu 20.4 µs22.0 µs 46.9 µs19.2 µs 31321
mut-bulk: positions(fn)v3 3.32 ms3.49 ms 5.87 ms3.23 ms 197
mut-bulk: positions(fn)gpu 34.8 µs38.0 µs 94.9 µs32.6 µs 18135
mut-bulk: shiftv3 3.40 ms3.59 ms 6.23 ms3.25 ms 188
mut-bulk: shiftgpu 34.0 µs35.7 µs 65.5 µs32.8 µs 19099
mut-bulk: data setv3 922 µs944 µs 1.19 ms909 µs 720
mut-bulk: data setgpu 64.8 µs66.7 µs 115 µs62.0 µs 10233
mut-bulk: remove + re-add (256 nodes + cascade)v3 46.0 ms47.3 ms 53.7 ms40.2 ms 11
mut-bulk: remove + re-add (256 nodes + cascade)gpu 6.78 ms6.84 ms 8.27 ms6.04 ms 96

scenarios N=2,000 · 12.8 sv4 (gpu) v3

scn: explore (expand 2-hop + select + fit)
7.8×
scn: select-all + fit (listeners on)
26×
scn: drag (select band of 100 + 8-step shift, position listener)
16×
scn: edit (remove + re-add 256 nodes + cascade, add/remove listeners)
6.5×
scn: refresh (bulk data write + mapped labels + filter + fit, data listener)
1.81×
10 µs100 µs1 ms10 ms100 ms
All stats (table view)
groupbenchp50avgp99minsamples
scn: explore (expand 2-hop + select + fit)v3 290 µs332 µs 996 µs277 µs 2100
scn: explore (expand 2-hop + select + fit)gpu 37.0 µs40.1 µs 82.4 µs34.5 µs 17182
scn: select-all + fit (listeners on)v3 24.3 ms24.7 ms 27.9 ms22.6 ms 23
scn: select-all + fit (listeners on)gpu 918 µs972 µs 1.65 ms864 µs 692
scn: drag (select band of 100 + 8-step shift, position listener)v3 1.67 ms1.76 ms 2.44 ms1.62 ms 380
scn: drag (select band of 100 + 8-step shift, position listener)gpu 103 µs110 µs 334 µs99.4 µs 6325
scn: edit (remove + re-add 256 nodes + cascade, add/remove listeners)v3 44.5 ms44.5 ms 45.5 ms43.6 ms 12
scn: edit (remove + re-add 256 nodes + cascade, add/remove listeners)gpu 6.86 ms7.01 ms 8.43 ms6.31 ms 91
scn: refresh (bulk data write + mapped labels + filter + fit, data listener)v3 7.73 ms8.06 ms 11.4 ms7.04 ms 80
scn: refresh (bulk data write + mapped labels + filter + fit, data listener)gpu 4.26 ms4.41 ms 6.86 ms3.82 ms 148

traversal N=2,000 · 40.7 sv4 (gpu) v3

trav: neighborhood()
3.9×
trav: closedNeighborhood()
2.7×
trav: connectedEdges()
2.5×
trav: outgoers()
4.8×
trav: incomers()
4.8×
trav: successors()
725×
trav: predecessors()
726×
trav: band neighborhood()
4.8×
trav: band connectedEdges()
1.34×
trav: band roots()
22×
trav: band sources()
1.48×
trav: band connectedNodes()
2.7×
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s
All stats (table view)
groupbenchp50avgp99minsamples
trav: neighborhood()v3 3.85 µs4.05 µs 5.13 µs3.39 µs 38
trav: neighborhood()gpu 991 ns1.05 µs 2.11 µs820 ns 156
trav: closedNeighborhood()v3 5.85 µs5.79 µs 6.42 µs5.29 µs 26
trav: closedNeighborhood()gpu 2.17 µs2.35 µs 3.07 µs2.15 µs 68
trav: connectedEdges()v3 974 ns1.05 µs 1.78 µs948 ns 157
trav: connectedEdges()gpu 391 ns409 ns 539 ns381 ns 413
trav: outgoers()v3 2.27 µs2.41 µs 3.07 µs2.17 µs 67
trav: outgoers()gpu 478 ns563 ns 2.04 µs466 ns 295
trav: incomers()v3 2.26 µs2.40 µs 2.89 µs2.14 µs 67
trav: incomers()gpu 475 ns562 ns 2.07 µs468 ns 292
trav: successors()v3 435 ms439 ms 453 ms431 ms 12
trav: successors()gpu 599 µs638 µs 1.96 ms555 µs 1071
trav: predecessors()v3 430 ms433 ms 446 ms423 ms 12
trav: predecessors()gpu 593 µs628 µs 1.88 ms571 µs 1085
trav: band neighborhood()v3 183 µs195 µs 268 µs176 µs 3569
trav: band neighborhood()gpu 38.0 µs38.4 µs 39.9 µs37.2 µs 12
trav: band connectedEdges()v3 24.4 µs24.8 µs 25.3 µs23.8 µs 12
trav: band connectedEdges()gpu 18.3 µs18.2 µs 18.8 µs17.0 µs 12
trav: band roots()v3 107 µs119 µs 244 µs102 µs 5854
trav: band roots()gpu 4.81 µs4.84 µs 4.98 µs4.75 µs 31
trav: band sources()v3 6.56 µs6.59 µs 6.83 µs6.27 µs 22
trav: band sources()gpu 4.44 µs4.51 µs 4.83 µs4.35 µs 33
trav: band connectedNodes()v3 13.7 µs13.8 µs 13.8 µs13.6 µs 9
trav: band connectedNodes()gpu 5.06 µs5.11 µs 5.36 µs4.98 µs 29

algorithms N=2,000 · 1.6 minv4 (gpu) v3

algo: bfs (whole graph)
59×
algo: dfs (whole graph)
59×
algo: dijkstra + pathTo
56×
algo: aStar
3.4×
algo: bellmanFord
20×
algo: kruskal
25×
algo: tarjan SCC
36×
algo: hopcroft-tarjan biconnected
25×
algo: hierholzer (directed)
3.0×
algo: betweennessCentrality (unweighted)
11×
algo: degreeCentralityNormalized
38×
algo: closenessCentrality (one root)
73×
algo: degreeCentrality (one root)
30×
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
algo: bfs (whole graph)v3 54.2 ms53.7 ms 58.7 ms49.1 ms 9
algo: bfs (whole graph)gpu 924 µs936 µs 1.39 ms846 µs 727
algo: dfs (whole graph)v3 49.8 ms50.0 ms 50.4 ms48.3 ms 10
algo: dfs (whole graph)gpu 850 µs880 µs 1.28 ms808 µs 788
algo: dijkstra + pathTov3 54.0 ms54.1 ms 55.0 ms53.6 ms 9
algo: dijkstra + pathTogpu 959 µs974 µs 1.27 ms921 µs 713
algo: aStarv3 1.72 ms1.78 ms 2.82 ms1.68 ms 389
algo: aStargpu 511 µs525 µs 703 µs494 µs 1329
algo: bellmanFordv3 235 ms236 ms 259 ms213 ms 12
algo: bellmanFordgpu 11.8 ms12.0 ms 14.5 ms11.5 ms 54
algo: kruskalv3 13.3 ms14.2 ms 17.2 ms12.8 ms 45
algo: kruskalgpu 529 µs540 µs 902 µs469 µs 1272
algo: tarjan SCCv3 24.2 ms25.0 ms 29.7 ms22.1 ms 24
algo: tarjan SCCgpu 666 µs835 µs 5.30 ms623 µs 807
algo: hopcroft-tarjan biconnectedv3 87.9 ms88.4 ms 92.4 ms83.2 ms 12
algo: hopcroft-tarjan biconnectedgpu 3.51 ms3.87 ms 6.47 ms3.40 ms 174
algo: hierholzer (directed)v3 23.4 ms24.0 ms 27.0 ms22.0 ms 25
algo: hierholzer (directed)gpu 7.91 ms8.02 ms 8.91 ms7.70 ms 79
algo: betweennessCentrality (unweighted)v3 4.09 s4.10 s 4.14 s4.03 s 12
algo: betweennessCentrality (unweighted)gpu 364 ms380 ms 442 ms352 ms 12
algo: degreeCentralityNormalizedv3 14.9 ms15.8 ms 18.4 ms14.1 ms 40
algo: degreeCentralityNormalizedgpu 393 µs410 µs 803 µs388 µs 1701
algo: closenessCentrality (one root)v3 60.2 ms62.8 ms 69.4 ms59.1 ms 12
algo: closenessCentrality (one root)gpu 820 µs850 µs 1.44 ms787 µs 819
algo: degreeCentrality (one root)v3 7.49 µs7.40 µs 8.44 µs6.64 µs 19
algo: degreeCentrality (one root)gpu 247 ns256 ns 521 ns236 ns 657

algorithms N=500 · 3.4 minv4 (gpu) v3

algo: bfs (whole graph)
58×
algo: dfs (whole graph)
62×
algo: dijkstra + pathTo
51×
algo: aStar
3.6×
algo: bellmanFord
21×
algo: kruskal
24×
algo: tarjan SCC
34×
algo: hopcroft-tarjan biconnected
25×
algo: hierholzer (directed)
5.2×
algo: betweennessCentrality (unweighted)
12×
algo: degreeCentralityNormalized
37×
algo: closenessCentrality (one root)
70×
algo: degreeCentrality (one root)
30×
algo: pageRank (20 iters)
1.87×
algo: closenessCentrality (weighted, one root)
54×
algo: floydWarshall
1.59×
algo: closenessCentralityNormalized
1.67×
algo: markovClustering
1.10×
algo: hierarchicalClustering (threshold)
2.4×
algo: kMeans (fixed centroids)
3.9×
algo: kMedoids
8.9×
algo: fuzzyCMeans
8.7×
algo: affinityPropagation
5.2×
algo: kargerStein
1.03×
algo: betweennessCentrality (weighted)
8.7×
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
algo: bfs (whole graph)v3 12.3 ms13.2 ms 19.2 ms10.9 ms 48
algo: bfs (whole graph)gpu 213 µs217 µs 350 µs194 µs 3163
algo: dfs (whole graph)v3 11.2 ms12.2 ms 15.4 ms10.8 ms 53
algo: dfs (whole graph)gpu 181 µs188 µs 295 µs177 µs 3715
algo: dijkstra + pathTov3 12.0 ms12.8 ms 16.2 ms11.2 ms 51
algo: dijkstra + pathTogpu 235 µs241 µs 305 µs228 µs 2898
algo: aStarv3 438 µs448 µs 565 µs427 µs 1561
algo: aStargpu 122 µs127 µs 185 µs117 µs 5502
algo: bellmanFordv3 16.8 ms17.0 ms 18.4 ms16.5 ms 37
algo: bellmanFordgpu 808 µs840 µs 1.85 ms787 µs 827
algo: kruskalv3 3.23 ms3.56 ms 6.85 ms3.11 ms 193
algo: kruskalgpu 135 µs144 µs 263 µs132 µs 4848
algo: tarjan SCCv3 5.29 ms5.67 ms 9.20 ms5.11 ms 120
algo: tarjan SCCgpu 157 µs167 µs 309 µs150 µs 4106
algo: hopcroft-tarjan biconnectedv3 20.2 ms20.9 ms 23.6 ms18.8 ms 30
algo: hopcroft-tarjan biconnectedgpu 801 µs826 µs 1.15 ms767 µs 844
algo: hierholzer (directed)v3 4.25 ms4.49 ms 7.49 ms4.07 ms 146
algo: hierholzer (directed)gpu 816 µs838 µs 1.13 ms788 µs 813
algo: betweennessCentrality (unweighted)v3 251 ms255 ms 268 ms248 ms 12
algo: betweennessCentrality (unweighted)gpu 20.4 ms20.8 ms 22.3 ms19.9 ms 29
algo: degreeCentralityNormalizedv3 3.47 ms3.81 ms 7.21 ms3.39 ms 176
algo: degreeCentralityNormalizedgpu 94.0 µs96.0 µs 141 µs91.4 µs 7269
algo: closenessCentrality (one root)v3 14.1 ms14.5 ms 17.8 ms12.9 ms 44
algo: closenessCentrality (one root)gpu 202 µs206 µs 292 µs194 µs 3399
algo: degreeCentrality (one root)v3 7.28 µs7.40 µs 7.91 µs6.76 µs 20
algo: degreeCentrality (one root)gpu 241 ns246 ns 319 ns236 ns 691
algo: pageRank (20 iters)v3 2.73 ms2.90 ms 6.25 ms2.67 ms 231
algo: pageRank (20 iters)gpu 1.46 ms1.68 ms 3.82 ms1.42 ms 411
algo: closenessCentrality (weighted, one root)v3 13.9 ms14.7 ms 17.3 ms13.0 ms 43
algo: closenessCentrality (weighted, one root)gpu 255 µs265 µs 413 µs248 µs 2645
algo: floydWarshallv3 246 ms273 ms 383 ms244 ms 12
algo: floydWarshallgpu 155 ms160 ms 209 ms139 ms 12
algo: closenessCentralityNormalizedv3 274 ms276 ms 281 ms270 ms 12
algo: closenessCentralityNormalizedgpu 164 ms166 ms 167 ms162 ms 12
algo: markovClusteringv3 4.12 s4.38 s 4.64 s4.09 s 12
algo: markovClusteringgpu 3.75 s3.76 s 3.79 s3.74 s 12
algo: hierarchicalClustering (threshold)v3 34.6 ms34.6 ms 35.3 ms34.0 ms 16
algo: hierarchicalClustering (threshold)gpu 14.7 ms15.0 ms 16.7 ms14.3 ms 43
algo: kMeans (fixed centroids)v3 9.11 ms9.22 ms 10.4 ms8.93 ms 72
algo: kMeans (fixed centroids)gpu 2.35 ms2.39 ms 3.35 ms2.26 ms 289
algo: kMedoidsv3 376 ms333 ms 420 ms107 ms 12
algo: kMedoidsgpu 42.0 ms40.8 ms 55.7 ms21.6 ms 14
algo: fuzzyCMeansv3 78.8 ms80.4 ms 85.9 ms77.7 ms 12
algo: fuzzyCMeansgpu 9.06 ms9.15 ms 10.2 ms8.76 ms 72
algo: affinityPropagationv3 215 ms214 ms 222 ms202 ms 12
algo: affinityPropagationgpu 41.2 ms43.0 ms 47.5 ms39.3 ms 10
algo: kargerSteinv3 316 ms320 ms 328 ms314 ms 12
algo: kargerSteingpu 306 ms308 ms 316 ms298 ms 12
algo: betweennessCentrality (weighted)v3 703 ms708 ms 715 ms698 ms 12
algo: betweennessCentrality (weighted)gpu 80.9 ms82.5 ms 82.8 ms79.6 ms 12

mappers N=2,000 · 8.1 s

mapper: bulk write, color — cpu eval
2.54 ms
mapper: bulk write, color — gpu path
175 µs
mapper: bulk write, color + size — cpu eval
3.01 ms
mapper: bulk write, color + size — gpu color / cpu size
2.61 ms
mapper: bulk write, mapped labels (round-5 path) — label refresh
4.09 ms
100 µs1 ms10 ms
All stats (table view)
groupbenchp50avgp99minsamples
mapper: bulk write, colorcpu eval 2.54 ms2.60 ms 4.04 ms2.46 ms 263
mapper: bulk write, colorgpu path 175 µs182 µs 302 µs170 µs 3844
mapper: bulk write, color + sizecpu eval 3.01 ms3.04 ms 3.54 ms2.91 ms 225
mapper: bulk write, color + sizegpu color / cpu size 2.61 ms2.65 ms 3.10 ms2.55 ms 261
mapper: bulk write, mapped labels (round-5 path)label refresh 4.09 ms4.26 ms 6.92 ms3.46 ms 159