Cytoscape.js GPU benchmarks

v4 (src/) vs v3 (v3/src/) · Mitata · times are per-iteration p50 · 2026-09-02 01:25 · 9ed49abc (v4) · Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz · GPU: amd gcn-4 · chromium v24.18.0 · renderer 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
Adapteramd gcn-4
Browserchromium 149.0.7827.55
OSFedora Linux 43 (Workstation Edition) · 7.1.10-100.fc43.x86_64 · x64
Nodev24.18.0 (v8 13.6.233.17-node.50)
Commit9ed49abc
docs(113): the performance review recorded — what the sweep measured and what it fixed
Machine id5cf3f79c
Median speedup (geo-mean) 31× 104 v3-vs-gpu comparisons
Biggest win 256× frame: pan far-zoom ÷8 @ N=19.607k
v3 still ahead 0 comparisons
Total run time 22.3 min renderer profile

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

frame: pan far-zoom ÷8 @ 19.607k
256×
frame: pan fit-all (labels) @ 100k
241×
frame: pan far-zoom ÷8 @ 100k
215×
frame: pan fit-all @ 100k
209×
frame: pan fit-all (labels) @ 25k
151×
frame: pan fit-all (labels) @ 19.607k
148×
frame: pan fit-all @ 25k
133×
frame: pan fit-all @ 19.607k
130×
frame: pan far-zoom ÷8 @ 25k
130×
frame: pan fit-all (labels) @ 25k
129×
frame: pan fit-all @ 26k
122×
frame: pan fit-all @ 25k
121×
frame: pan far-zoom ÷8 @ 26k
121×
frame: pan far-zoom ÷8 @ 25k
120×
frame: pan fit-all (labels) @ 26k
118×
frame: pan zoomed-in 20× (labels) @ 100k
111×
frame: pan zoomed-in 20× @ 100k
107×
frame: pan zoomed-in 20× (labels) @ 19.607k
95×
frame: pan zoomed-in 20× @ 19.607k
73×
frame: pan fit-all (labels) @ 25k
47×
frame: pan fit-all (labels) @ 25k
45×
frame: pan fit-all (labels) @ 25k
45×
frame: pan fit-all (labels) @ 25k
44×
frame: pan fit-all (labels) @ 25k
44×
frame: pan fit-all (labels) @ 25k
44×
frame: pan fit-all (labels) @ 25k
43×
init: create + ready (labels) @ 19.607k
43×
init: create + ready @ 19.607k
42×
frame: pan far-zoom ÷8 @ 25k
40×
frame: pan fit-all @ 25k
40×
init: create + ready @ 25k
39×
frame: pan far-zoom ÷8 @ 25k
39×
frame: pan far-zoom ÷8 @ 25k
39×
frame: pan fit-all @ 25k
39×
frame: pan fit-all @ 25k
39×
frame: pan fit-all @ 25k
39×
frame: pan fit-all @ 25k
38×
frame: pan far-zoom ÷8 @ 25k
38×
frame: pan fit-all (labels) @ 25k
38×
frame: pan far-zoom ÷8 @ 25k
38×
frame: pan far-zoom ÷8 @ 25k
38×
frame: pan fit-all @ 25k
38×
frame: pan far-zoom ÷8 @ 25k
37×
frame: pan fit-all @ 25k
37×
init: create + ready @ 26k
35×
init: create + ready @ 25k
35×
init: create + ready @ 25k
34×
frame: pan fit-all @ 25k
34×
frame: pan far-zoom ÷8 @ 25k
33×
export: png full (≤2048 px) @ 19.607k
32×
init: create + ready @ 25k
31×
frame: pan zoomed-in 20× (labels) @ 25k
30×
frame: pan zoomed-in 20× (labels) @ 25k
30×
init: create + ready @ 25k
29×
frame: pan zoomed-in 20× @ 25k
29×
frame: pan zoomed-in 20× @ 25k
29×
init: create + ready @ 25k
29×
init: create + ready @ 100k
28×
export: png full (≤2048 px) @ 100k
28×
init: create + ready @ 25k
26×
init: create + ready (labels) @ 25k
26×
init: create + ready @ 25k
25×
init: create + ready (labels) @ 100k
24×
init: create + ready (labels) @ 25k
23×
init: create + ready (labels) @ 25k
22×
init: create + ready (labels) @ 25k
22×
frame: pan zoomed-in 20× (labels) @ 25k
21×
frame: pan zoomed-in 20× (labels) @ 25k
21×
init: create + ready (labels) @ 25k
21×
frame: pan zoomed-in 20× (labels) @ 25k
21×
init: create + ready @ 25k
20×
frame: pan zoomed-in 20× @ 25k
20×
frame: pan zoomed-in 20× (labels) @ 25k
19×
init: create + ready (labels) @ 26k
19×
init: create + ready (labels) @ 25k
19×
init: create + ready @ 25k
19×
frame: pan zoomed-in 20× (labels) @ 25k
19×
frame: pan zoomed-in 20× (labels) @ 25k
19×
frame: pan zoomed-in 20× @ 25k
18×
frame: pan zoomed-in 20× @ 25k
18×
frame: pan zoomed-in 20× @ 25k
18×
frame: pan zoomed-in 20× @ 25k
18×
frame: pan zoomed-in 20× @ 25k
18×
init: create + ready (labels) @ 25k
18×
frame: pan zoomed-in 20× (labels) @ 25k
18×
frame: pan zoomed-in 20× (labels) @ 25k
18×
init: create + ready (labels) @ 25k
18×
frame: pan zoomed-in 20× @ 25k
17×
frame: pan zoomed-in 20× @ 25k
17×
export: png full (≤2048 px) @ 25k
17×
init: create + ready (labels) @ 25k
17×
init: create + ready (labels) @ 25k
17×
frame: pan zoomed-in 20× (labels) @ 26k
15×
frame: pan zoomed-in 20× @ 26k
14×
export: png full (≤2048 px) @ 25k
14×
export: png full (≤2048 px) @ 25k
7.8×
export: png full (≤2048 px) @ 25k
6.0×
export: png full (≤2048 px) @ 25k
5.6×
export: png full (≤2048 px) @ 26k
5.5×
export: png full (≤2048 px) @ 25k
5.2×
export: png full (≤2048 px) @ 25k
5.1×
export: png full (≤2048 px) @ 25k
5.1×
export: png full (≤2048 px) @ 25k
3.9×
export: png full (≤2048 px) @ 25k
2.1×
10×100×1000×

render — generated 25k × 50k N=25,000 · 1.3 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
37×
frame: pan zoomed-in 20×
17×
frame: pan far-zoom ÷8
38×
frame: pan fit-all (labels)
44×
frame: pan zoomed-in 20× (labels)
18×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
434 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
338 µs
compaction: compact() one-shot — gpu
19.8 ms
init: create + ready
19×
init: create + ready (labels)
18×
init: columnar form (gpu-only) — gpu
83.2 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
24.7 ms
export: png full (≤2048 px)
5.2×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 617 ms631 ms 630 ms606 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.72 ms3.72 ms 3.73 ms3.70 ms 121
frame: pan zoomed-in 20×v3 289 ms285 ms 308 ms204 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.8 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 4.83 ms4.83 ms 4.84 ms4.80 ms 121
frame: pan far-zoom ÷8v3 627 ms629 ms 640 ms612 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan far-zoom ÷8gpu (device) 689 µs657 µs 694 µs553 µs 121
frame: pan fit-all (labels)v3 727 ms738 ms 735 ms715 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-all (labels)gpu (device) 3.97 ms3.97 ms 4.00 ms3.95 ms 121
frame: pan zoomed-in 20× (labels)v3 301 ms294 ms 303 ms214 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.16 ms5.16 ms 5.18 ms5.14 ms 121
pick: hover while panninggpu 17.3 ms17.0 ms 21.3 ms300 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.4 ms 120
compaction: pan fit-all, 10% livegpu device (peak slots) 434 µs434 µs 436 µs430 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 338 µs338 µs 341 µs336 µs 120
compaction: compact() one-shotgpu 19.8 ms19.8 ms 19.8 ms19.8 ms 1
init: create + readyv3 2.61 s2.61 s 2.61 s2.61 s 1
init: create + readygpu 138 ms138 ms 138 ms138 ms 1
init: create + ready (labels)v3 3.53 s3.53 s 3.53 s3.53 s 1
init: create + ready (labels)gpu 201 ms201 ms 201 ms201 ms 1
init: columnar form (gpu-only)gpu 83.2 ms83.2 ms 83.2 ms83.2 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 24.7 ms24.7 ms 24.7 ms24.7 ms 1
export: png full (≤2048 px)v3 1.43 s1.43 s 1.43 s1.43 s 1
export: png full (≤2048 px)gpu 277 ms277 ms 277 ms277 ms 1

render — generated 100k × 300k N=100,000 · 3.0 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
209×
frame: pan zoomed-in 20×
107×
frame: pan far-zoom ÷8
215×
frame: pan fit-all (labels)
241×
frame: pan zoomed-in 20× (labels)
111×
pick: hover while panning — gpu
19.1 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
831 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
492 µs
compaction: compact() one-shot — gpu
64.1 ms
init: create + ready
28×
init: create + ready (labels)
24×
init: columnar form (gpu-only) — gpu
479 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
186 ms
export: png full (≤2048 px)
28×
100 µs1 ms10 ms100 ms1 s10 s100 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 3.50 s3.75 s 3.50 s3.41 s 3
frame: pan fit-allgpu 16.7 ms16.7 ms 16.8 ms16.4 ms 121
frame: pan fit-allgpu (device) 10.0 ms10.0 ms 10.0 ms10.0 ms 121
frame: pan zoomed-in 20×v3 1.78 s1.75 s 1.80 s1.31 s 5
frame: pan zoomed-in 20×gpu 16.7 ms20.3 ms 33.5 ms16.4 ms 100
frame: pan zoomed-in 20×gpu (device) 20.1 ms20.1 ms 20.2 ms20.0 ms 100
frame: pan far-zoom ÷8v3 3.60 s3.59 s 3.60 s3.57 s 3
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan far-zoom ÷8gpu (device) 1.57 ms1.56 ms 1.58 ms1.52 ms 121
frame: pan fit-all (labels)v3 4.03 s4.45 s 4.03 s4.03 s 2
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.3 ms 121
frame: pan fit-all (labels)gpu (device) 11.2 ms11.2 ms 11.2 ms11.1 ms 121
frame: pan zoomed-in 20× (labels)v3 1.86 s1.96 s 2.14 s1.32 s 5
frame: pan zoomed-in 20× (labels)gpu 16.7 ms21.7 ms 33.5 ms16.4 ms 92
frame: pan zoomed-in 20× (labels)gpu (device) 21.5 ms21.5 ms 21.6 ms21.4 ms 93
pick: hover while panninggpu 19.1 ms18.7 ms 21.0 ms500 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.3 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 831 µs856 µs 1.01 ms827 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 492 µs492 µs 495 µs489 µs 121
compaction: compact() one-shotgpu 64.1 ms64.1 ms 64.1 ms64.1 ms 1
init: create + readyv3 16.1 s16.1 s 16.1 s16.1 s 1
init: create + readygpu 578 ms578 ms 578 ms578 ms 1
init: create + ready (labels)v3 19.0 s19.0 s 19.0 s19.0 s 1
init: create + ready (labels)gpu 785 ms785 ms 785 ms785 ms 1
init: columnar form (gpu-only)gpu 479 ms479 ms 479 ms479 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 186 ms186 ms 186 ms186 ms 1
export: png full (≤2048 px)v3 6.63 s6.63 s 6.63 s6.63 s 1
export: png full (≤2048 px)gpu 239 ms239 ms 239 ms239 ms 1

render — ndex-x-large (19.6k × 465k) N=19,607 · 3.2 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
130×
frame: pan zoomed-in 20×
73×
frame: pan far-zoom ÷8
256×
frame: pan fit-all (labels)
148×
frame: pan zoomed-in 20× (labels)
95×
pick: hover while panning — gpu
300 µs
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
1.23 ms
compaction: pan fit-all, 10% live — gpu device (compacted)
805 µs
compaction: compact() one-shot — gpu
65.6 ms
init: create + ready
42×
init: create + ready (labels)
43×
init: columnar form (gpu-only) — gpu
419 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
48.2 ms
export: png full (≤2048 px)
32×
100 µs1 ms10 ms100 ms1 s10 s100 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 4.34 s4.83 s 4.34 s4.34 s 2
frame: pan fit-allgpu 33.4 ms38.8 ms 50.2 ms33.2 ms 52
frame: pan fit-allgpu (device) 38.4 ms38.4 ms 38.7 ms38.0 ms 52
frame: pan zoomed-in 20×v3 2.45 s2.68 s 2.45 s2.43 s 3
frame: pan zoomed-in 20×gpu 33.4 ms36.7 ms 50.1 ms33.0 ms 55
frame: pan zoomed-in 20×gpu (device) 36.6 ms36.6 ms 37.4 ms35.5 ms 56
frame: pan far-zoom ÷8v3 4.27 s5.52 s 4.27 s4.27 s 2
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan far-zoom ÷8gpu (device) 1.47 ms1.47 ms 1.49 ms1.46 ms 121
frame: pan fit-all (labels)v3 4.94 s5.24 s 4.94 s4.94 s 2
frame: pan fit-all (labels)gpu 33.4 ms39.2 ms 50.1 ms33.2 ms 51
frame: pan fit-all (labels)gpu (device) 38.7 ms38.8 ms 39.4 ms38.3 ms 52
frame: pan zoomed-in 20× (labels)v3 3.18 s3.16 s 3.18 s3.07 s 3
frame: pan zoomed-in 20× (labels)gpu 33.4 ms38.8 ms 50.1 ms33.2 ms 52
frame: pan zoomed-in 20× (labels)gpu (device) 38.5 ms38.5 ms 39.2 ms37.5 ms 53
pick: hover while panninggpu 300 µs25.9 ms 76.6 ms0.00 ns 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 1.23 ms1.24 ms 1.27 ms1.19 ms 121
compaction: pan fit-all, 10% livegpu device (compacted) 805 µs773 µs 821 µs709 µs 121
compaction: compact() one-shotgpu 65.6 ms65.6 ms 65.6 ms65.6 ms 1
init: create + readyv3 20.1 s20.1 s 20.1 s20.1 s 1
init: create + readygpu 485 ms485 ms 485 ms485 ms 1
init: create + ready (labels)v3 23.6 s23.6 s 23.6 s23.6 s 1
init: create + ready (labels)gpu 554 ms554 ms 554 ms554 ms 1
init: columnar form (gpu-only)gpu 419 ms419 ms 419 ms419 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 48.2 ms48.2 ms 48.2 ms48.2 ms 1
export: png full (≤2048 px)v3 6.49 s6.49 s 6.49 s6.49 s 1
export: png full (≤2048 px)gpu 201 ms201 ms 201 ms201 ms 1

render — generated 25k × 50k curved (bezier pairs) N=25,000 · 1.4 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
38×
frame: pan zoomed-in 20×
17×
frame: pan far-zoom ÷8
38×
frame: pan fit-all (labels)
44×
frame: pan zoomed-in 20× (labels)
18×
pick: hover while panning — gpu
19.4 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
578 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
495 µs
compaction: compact() one-shot — gpu
15.2 ms
init: create + ready
26×
init: create + ready (labels)
17×
init: columnar form (gpu-only) — gpu
93.3 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
17.8 ms
export: png full (≤2048 px)
5.1×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 627 ms637 ms 668 ms605 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.3 ms 121
frame: pan fit-allgpu (device) 13.2 ms13.2 ms 13.3 ms13.2 ms 121
frame: pan zoomed-in 20×v3 281 ms276 ms 287 ms201 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 4.13 ms4.13 ms 4.17 ms4.08 ms 121
frame: pan far-zoom ÷8v3 627 ms631 ms 643 ms619 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 12.9 ms12.9 ms 12.9 ms12.9 ms 121
frame: pan fit-all (labels)v3 742 ms758 ms 830 ms706 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-all (labels)gpu (device) 13.5 ms13.5 ms 13.5 ms13.5 ms 121
frame: pan zoomed-in 20× (labels)v3 300 ms294 ms 307 ms214 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 4.50 ms4.50 ms 4.53 ms4.46 ms 121
pick: hover while panninggpu 19.4 ms18.2 ms 19.9 ms300 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 578 µs578 µs 580 µs575 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 495 µs495 µs 498 µs493 µs 121
compaction: compact() one-shotgpu 15.2 ms15.2 ms 15.2 ms15.2 ms 1
init: create + readyv3 3.15 s3.15 s 3.15 s3.15 s 1
init: create + readygpu 120 ms120 ms 120 ms120 ms 1
init: create + ready (labels)v3 3.46 s3.46 s 3.46 s3.46 s 1
init: create + ready (labels)gpu 207 ms207 ms 207 ms207 ms 1
init: columnar form (gpu-only)gpu 93.3 ms93.3 ms 93.3 ms93.3 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 17.8 ms17.8 ms 17.8 ms17.8 ms 1
export: png full (≤2048 px)v3 1.32 s1.32 s 1.32 s1.32 s 1
export: png full (≤2048 px)gpu 260 ms260 ms 260 ms260 ms 1

render — generated 25k × 50k compound (1k parents) N=26,000 · 1.6 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
122×
frame: pan zoomed-in 20×
14×
frame: pan far-zoom ÷8
121×
frame: pan fit-all (labels)
118×
frame: pan zoomed-in 20× (labels)
15×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
459 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
376 µs
compaction: compact() one-shot — gpu
14.3 ms
init: create + ready
35×
init: create + ready (labels)
19×
init: columnar form (gpu-only) — gpu
126 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
29.6 ms
export: png full (≤2048 px)
5.5×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 2.05 s2.06 s 2.05 s2.03 s 4
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 2.30 ms2.29 ms 2.31 ms2.26 ms 121
frame: pan zoomed-in 20×v3 241 ms245 ms 252 ms230 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.3 ms 121
frame: pan zoomed-in 20×gpu (device) 4.56 ms4.55 ms 4.58 ms4.48 ms 121
frame: pan far-zoom ÷8v3 2.01 s2.02 s 2.04 s1.99 s 4
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 702 µs689 µs 705 µs564 µs 121
frame: pan fit-all (labels)v3 1.96 s1.99 s 2.04 s1.94 s 5
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 2.52 ms2.53 ms 2.55 ms2.51 ms 121
frame: pan zoomed-in 20× (labels)v3 250 ms250 ms 253 ms245 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.3 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 4.91 ms4.91 ms 4.96 ms4.87 ms 121
pick: hover while panninggpu 17.3 ms17.3 ms 17.9 ms8.60 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 120
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.5 ms 120
compaction: pan fit-all, 10% livegpu device (peak slots) 459 µs458 µs 461 µs454 µs 120
compaction: pan fit-all, 10% livegpu device (compacted) 376 µs376 µs 378 µs374 µs 120
compaction: compact() one-shotgpu 14.3 ms14.3 ms 14.3 ms14.3 ms 1
init: create + readyv3 5.24 s5.24 s 5.24 s5.24 s 1
init: create + readygpu 150 ms150 ms 150 ms150 ms 1
init: create + ready (labels)v3 5.99 s5.99 s 5.99 s5.99 s 1
init: create + ready (labels)gpu 310 ms310 ms 310 ms310 ms 1
init: columnar form (gpu-only)gpu 126 ms126 ms 126 ms126 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 29.6 ms29.6 ms 29.6 ms29.6 ms 1
export: png full (≤2048 px)v3 1.40 s1.40 s 1.40 s1.40 s 1
export: png full (≤2048 px)gpu 255 ms255 ms 255 ms255 ms 1

render — generated 25k × 50k images (icon-per-type) N=25,000 · 1.5 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
39×
frame: pan zoomed-in 20×
20×
frame: pan far-zoom ÷8
39×
frame: pan fit-all (labels)
44×
frame: pan zoomed-in 20× (labels)
21×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
433 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
338 µs
compaction: compact() one-shot — gpu
14.7 ms
init: create + ready
29×
init: create + ready (labels)
22×
init: columnar form (gpu-only) — gpu
113 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
33.4 ms
export: png full (≤2048 px)
17×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 646 ms647 ms 649 ms638 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan fit-allgpu (device) 3.76 ms3.76 ms 3.77 ms3.75 ms 121
frame: pan zoomed-in 20×v3 328 ms338 ms 350 ms319 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan zoomed-in 20×gpu (device) 4.85 ms4.85 ms 4.87 ms4.82 ms 121
frame: pan far-zoom ÷8v3 656 ms657 ms 666 ms644 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.8 ms16.3 ms 121
frame: pan far-zoom ÷8gpu (device) 748 µs702 µs 753 µs600 µs 121
frame: pan fit-all (labels)v3 736 ms739 ms 759 ms718 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 4.00 ms4.00 ms 4.02 ms3.99 ms 121
frame: pan zoomed-in 20× (labels)v3 352 ms359 ms 363 ms335 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.8 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.20 ms5.21 ms 5.24 ms5.18 ms 121
pick: hover while panninggpu 17.3 ms18.2 ms 17.6 ms500 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 433 µs433 µs 436 µs427 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 338 µs338 µs 340 µs336 µs 121
compaction: compact() one-shotgpu 14.7 ms14.7 ms 14.7 ms14.7 ms 1
init: create + readyv3 4.32 s4.32 s 4.32 s4.32 s 1
init: create + readygpu 151 ms151 ms 151 ms151 ms 1
init: create + ready (labels)v3 4.73 s4.73 s 4.73 s4.73 s 1
init: create + ready (labels)gpu 215 ms215 ms 215 ms215 ms 1
init: columnar form (gpu-only)gpu 113 ms113 ms 113 ms113 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 33.4 ms33.4 ms 33.4 ms33.4 ms 1
export: png full (≤2048 px)v3 4.77 s4.77 s 4.77 s4.77 s 1
export: png full (≤2048 px)gpu 283 ms283 ms 283 ms283 ms 1

render — generated 25k × 50k wrapped labels N=25,000 · 1.4 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
38×
frame: pan zoomed-in 20×
18×
frame: pan far-zoom ÷8
37×
frame: pan fit-all (labels)
45×
frame: pan zoomed-in 20× (labels)
21×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
435 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
340 µs
compaction: compact() one-shot — gpu
14.1 ms
init: create + ready
31×
init: create + ready (labels)
17×
init: columnar form (gpu-only) — gpu
87.7 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
25.1 ms
export: png full (≤2048 px)
3.9×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 642 ms660 ms 665 ms636 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.70 ms3.70 ms 3.72 ms3.65 ms 121
frame: pan zoomed-in 20×v3 307 ms304 ms 322 ms215 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 4.83 ms4.83 ms 4.85 ms4.81 ms 121
frame: pan far-zoom ÷8v3 624 ms639 ms 649 ms619 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan far-zoom ÷8gpu (device) 689 µs662 µs 694 µs551 µs 121
frame: pan fit-all (labels)v3 747 ms768 ms 791 ms743 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 4.90 ms4.90 ms 4.92 ms4.87 ms 121
frame: pan zoomed-in 20× (labels)v3 344 ms337 ms 355 ms237 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 6.37 ms6.36 ms 6.39 ms6.23 ms 121
pick: hover while panninggpu 17.3 ms17.2 ms 17.5 ms8.30 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.9 ms16.2 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 435 µs435 µs 437 µs432 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 340 µs340 µs 342 µs336 µs 121
compaction: compact() one-shotgpu 14.1 ms14.1 ms 14.1 ms14.1 ms 1
init: create + readyv3 2.95 s2.95 s 2.95 s2.95 s 1
init: create + readygpu 96.2 ms96.2 ms 96.2 ms96.2 ms 1
init: create + ready (labels)v3 4.42 s4.42 s 4.42 s4.42 s 1
init: create + ready (labels)gpu 264 ms264 ms 264 ms264 ms 1
init: columnar form (gpu-only)gpu 87.7 ms87.7 ms 87.7 ms87.7 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 25.1 ms25.1 ms 25.1 ms25.1 ms 1
export: png full (≤2048 px)v3 1.45 s1.45 s 1.45 s1.45 s 1
export: png full (≤2048 px)gpu 374 ms374 ms 374 ms374 ms 1

render — generated 25k × 50k wrapped outlined labels N=25,000 · 1.4 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
39×
frame: pan zoomed-in 20×
18×
frame: pan far-zoom ÷8
38×
frame: pan fit-all (labels)
43×
frame: pan zoomed-in 20× (labels)
19×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
435 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
339 µs
compaction: compact() one-shot — gpu
10.0 ms
init: create + ready
29×
init: create + ready (labels)
22×
init: columnar form (gpu-only) — gpu
81.2 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
23.2 ms
export: png full (≤2048 px)
5.6×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 645 ms658 ms 658 ms633 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.68 ms3.68 ms 3.70 ms3.67 ms 121
frame: pan zoomed-in 20×v3 307 ms300 ms 311 ms211 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 4.82 ms4.82 ms 4.85 ms4.78 ms 121
frame: pan far-zoom ÷8v3 641 ms643 ms 658 ms628 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 688 µs683 µs 692 µs552 µs 121
frame: pan fit-all (labels)v3 719 ms734 ms 728 ms709 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 4.92 ms4.92 ms 4.93 ms4.88 ms 121
frame: pan zoomed-in 20× (labels)v3 325 ms328 ms 352 ms237 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 6.48 ms6.47 ms 6.51 ms6.36 ms 121
pick: hover while panninggpu 17.3 ms18.5 ms 17.9 ms13.2 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 435 µs435 µs 437 µs432 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 339 µs338 µs 341 µs333 µs 121
compaction: compact() one-shotgpu 10.0 ms10.0 ms 10.0 ms10.0 ms 1
init: create + readyv3 3.14 s3.14 s 3.14 s3.14 s 1
init: create + readygpu 107 ms107 ms 107 ms107 ms 1
init: create + ready (labels)v3 4.22 s4.22 s 4.22 s4.22 s 1
init: create + ready (labels)gpu 188 ms188 ms 188 ms188 ms 1
init: columnar form (gpu-only)gpu 81.2 ms81.2 ms 81.2 ms81.2 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 23.2 ms23.2 ms 23.2 ms23.2 ms 1
export: png full (≤2048 px)v3 1.47 s1.47 s 1.47 s1.47 s 1
export: png full (≤2048 px)gpu 261 ms261 ms 261 ms261 ms 1

render — generated 25k × 50k half-invisible / half-inert N=25,000 · 1.3 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
34×
frame: pan zoomed-in 20×
18×
frame: pan far-zoom ÷8
33×
frame: pan fit-all (labels)
38×
frame: pan zoomed-in 20× (labels)
21×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
435 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
340 µs
compaction: compact() one-shot — gpu
12.5 ms
init: create + ready
25×
init: create + ready (labels)
21×
init: columnar form (gpu-only) — gpu
100 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
29.4 ms
export: png full (≤2048 px)
2.1×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 568 ms582 ms 592 ms556 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 1.27 ms1.28 ms 1.31 ms1.27 ms 121
frame: pan zoomed-in 20×v3 306 ms300 ms 313 ms217 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 1.52 ms1.53 ms 1.55 ms1.51 ms 121
frame: pan far-zoom ÷8v3 553 ms561 ms 588 ms545 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 524 µs524 µs 527 µs521 µs 121
frame: pan fit-all (labels)v3 640 ms658 ms 661 ms630 ms 12
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-all (labels)gpu (device) 1.46 ms1.46 ms 1.49 ms1.42 ms 121
frame: pan zoomed-in 20× (labels)v3 345 ms345 ms 351 ms337 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 1.75 ms1.75 ms 1.77 ms1.71 ms 121
pick: hover while panninggpu 17.3 ms17.1 ms 17.5 ms4.70 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 435 µs435 µs 437 µs432 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 340 µs340 µs 341 µs337 µs 121
compaction: compact() one-shotgpu 12.5 ms12.5 ms 12.5 ms12.5 ms 1
init: create + readyv3 3.00 s3.00 s 3.00 s3.00 s 1
init: create + readygpu 119 ms119 ms 119 ms119 ms 1
init: create + ready (labels)v3 4.09 s4.09 s 4.09 s4.09 s 1
init: create + ready (labels)gpu 199 ms199 ms 199 ms199 ms 1
init: columnar form (gpu-only)gpu 100 ms100 ms 100 ms100 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 29.4 ms29.4 ms 29.4 ms29.4 ms 1
export: png full (≤2048 px)v3 690 ms690 ms 690 ms690 ms 1
export: png full (≤2048 px)gpu 336 ms336 ms 336 ms336 ms 1

render — generated 25k × 50k arrows (filled) N=25,000 · 1.6 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
121×
frame: pan zoomed-in 20×
29×
frame: pan far-zoom ÷8
120×
frame: pan fit-all (labels)
129×
frame: pan zoomed-in 20× (labels)
30×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
435 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
340 µs
compaction: compact() one-shot — gpu
12.0 ms
init: create + ready
39×
init: create + ready (labels)
19×
init: columnar form (gpu-only) — gpu
101 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
24.0 ms
export: png full (≤2048 px)
7.8×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 2.02 s1.94 s 2.02 s1.77 s 5
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.83 ms3.83 ms 3.86 ms3.81 ms 121
frame: pan zoomed-in 20×v3 485 ms482 ms 493 ms406 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan zoomed-in 20×gpu (device) 5.05 ms5.05 ms 5.09 ms5.03 ms 121
frame: pan far-zoom ÷8v3 2.01 s2.01 s 2.04 s1.95 s 4
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 705 µs678 µs 708 µs565 µs 121
frame: pan fit-all (labels)v3 2.15 s2.15 s 2.17 s2.08 s 4
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-all (labels)gpu (device) 4.12 ms4.12 ms 4.13 ms4.10 ms 121
frame: pan zoomed-in 20× (labels)v3 493 ms488 ms 503 ms410 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.41 ms5.41 ms 5.43 ms5.39 ms 121
pick: hover while panninggpu 17.3 ms17.2 ms 17.7 ms10.5 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.9 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 435 µs435 µs 438 µs433 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 340 µs340 µs 342 µs338 µs 121
compaction: compact() one-shotgpu 12.0 ms12.0 ms 12.0 ms12.0 ms 1
init: create + readyv3 3.55 s3.55 s 3.55 s3.55 s 1
init: create + readygpu 90.1 ms90.1 ms 90.1 ms90.1 ms 1
init: create + ready (labels)v3 4.30 s4.30 s 4.30 s4.30 s 1
init: create + ready (labels)gpu 223 ms223 ms 223 ms223 ms 1
init: columnar form (gpu-only)gpu 101 ms101 ms 101 ms101 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 24.0 ms24.0 ms 24.0 ms24.0 ms 1
export: png full (≤2048 px)v3 2.10 s2.10 s 2.10 s2.10 s 1
export: png full (≤2048 px)gpu 269 ms269 ms 269 ms269 ms 1

render — generated 25k × 50k arrows (half hollow, 0.6 alpha) N=25,000 · 1.7 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
133×
frame: pan zoomed-in 20×
29×
frame: pan far-zoom ÷8
130×
frame: pan fit-all (labels)
151×
frame: pan zoomed-in 20× (labels)
30×
pick: hover while panning — gpu
17.8 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
435 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
340 µs
compaction: compact() one-shot — gpu
13.2 ms
init: create + ready
20×
init: create + ready (labels)
18×
init: columnar form (gpu-only) — gpu
167 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
31.3 ms
export: png full (≤2048 px)
14×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 2.22 s2.20 s 2.23 s2.05 s 4
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan fit-allgpu (device) 3.86 ms3.86 ms 3.88 ms3.85 ms 121
frame: pan zoomed-in 20×v3 483 ms484 ms 502 ms420 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20×gpu (device) 5.08 ms5.07 ms 5.09 ms5.05 ms 121
frame: pan far-zoom ÷8v3 2.17 s2.18 s 2.17 s2.12 s 4
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 703 µs676 µs 707 µs563 µs 121
frame: pan fit-all (labels)v3 2.53 s2.52 s 2.55 s2.32 s 4
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 4.11 ms4.11 ms 4.12 ms4.09 ms 121
frame: pan zoomed-in 20× (labels)v3 506 ms499 ms 511 ms421 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.42 ms5.43 ms 5.46 ms5.40 ms 121
pick: hover while panninggpu 17.8 ms17.4 ms 18.2 ms900 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 435 µs434 µs 438 µs429 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 340 µs340 µs 346 µs337 µs 121
compaction: compact() one-shotgpu 13.2 ms13.2 ms 13.2 ms13.2 ms 1
init: create + readyv3 3.71 s3.71 s 3.71 s3.71 s 1
init: create + readygpu 185 ms185 ms 185 ms185 ms 1
init: create + ready (labels)v3 4.81 s4.81 s 4.81 s4.81 s 1
init: create + ready (labels)gpu 266 ms266 ms 266 ms266 ms 1
init: columnar form (gpu-only)gpu 167 ms167 ms 167 ms167 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 31.3 ms31.3 ms 31.3 ms31.3 ms 1
export: png full (≤2048 px)v3 4.33 s4.33 s 4.33 s4.33 s 1
export: png full (≤2048 px)gpu 318 ms318 ms 318 ms318 ms 1

render — generated 25k × 50k hexagon borders (solid) N=25,000 · 1.4 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
40×
frame: pan zoomed-in 20×
18×
frame: pan far-zoom ÷8
40×
frame: pan fit-all (labels)
47×
frame: pan zoomed-in 20× (labels)
19×
pick: hover while panning — gpu
17.3 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
436 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
341 µs
compaction: compact() one-shot — gpu
13.2 ms
init: create + ready
35×
init: create + ready (labels)
23×
init: columnar form (gpu-only) — gpu
92.5 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
24.5 ms
export: png full (≤2048 px)
6.0×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 665 ms679 ms 699 ms650 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.73 ms3.73 ms 3.74 ms3.72 ms 121
frame: pan zoomed-in 20×v3 304 ms301 ms 325 ms210 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan zoomed-in 20×gpu (device) 4.88 ms4.88 ms 4.90 ms4.85 ms 121
frame: pan far-zoom ÷8v3 669 ms666 ms 673 ms654 ms 11
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 694 µs694 µs 697 µs690 µs 121
frame: pan fit-all (labels)v3 780 ms785 ms 789 ms754 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.2 ms 121
frame: pan fit-all (labels)gpu (device) 3.97 ms3.97 ms 3.99 ms3.96 ms 121
frame: pan zoomed-in 20× (labels)v3 312 ms310 ms 320 ms218 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.21 ms5.22 ms 5.25 ms5.19 ms 121
pick: hover while panninggpu 17.3 ms16.8 ms 18.1 ms100 µs 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 120
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.8 ms16.5 ms 121
compaction: pan fit-all, 10% livegpu device (peak slots) 436 µs435 µs 438 µs430 µs 120
compaction: pan fit-all, 10% livegpu device (compacted) 341 µs341 µs 344 µs340 µs 121
compaction: compact() one-shotgpu 13.2 ms13.2 ms 13.2 ms13.2 ms 1
init: create + readyv3 3.42 s3.42 s 3.42 s3.42 s 1
init: create + readygpu 98.7 ms98.7 ms 98.7 ms98.7 ms 1
init: create + ready (labels)v3 4.05 s4.05 s 4.05 s4.05 s 1
init: create + ready (labels)gpu 180 ms180 ms 180 ms180 ms 1
init: columnar form (gpu-only)gpu 92.5 ms92.5 ms 92.5 ms92.5 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 24.5 ms24.5 ms 24.5 ms24.5 ms 1
export: png full (≤2048 px)v3 1.56 s1.56 s 1.56 s1.56 s 1
export: png full (≤2048 px)gpu 260 ms260 ms 260 ms260 ms 1

render — generated 25k × 50k hexagon borders (dashed) N=25,000 · 1.4 minv4 (gpu) v3

Wall frame times are vsync-bound (both sides floor at the display refresh when fast); “gpu (device)” table rows are GPU-pass time via timestamp-query — the unbounded cost metric. init/export rows are one-shot timings. Adapter: amd gcn-4; dpr 2; 1280×800; adaptive render scale pinned to 1.

frame: pan fit-all
39×
frame: pan zoomed-in 20×
18×
frame: pan far-zoom ÷8
39×
frame: pan fit-all (labels)
45×
frame: pan zoomed-in 20× (labels)
19×
pick: hover while panning — gpu
17.2 ms
compaction: pan fit-all, 10% live — gpu (peak slots)
16.7 ms
compaction: pan fit-all, 10% live — gpu (compacted)
16.7 ms
compaction: pan fit-all, 10% live — gpu device (peak slots)
436 µs
compaction: pan fit-all, 10% live — gpu device (compacted)
342 µs
compaction: compact() one-shot — gpu
9.20 ms
init: create + ready
34×
init: create + ready (labels)
26×
init: columnar form (gpu-only) — gpu
81.0 ms
init: columnar form (gpu-only) — convert (toColumnarElements)
22.6 ms
export: png full (≤2048 px)
5.1×
100 µs1 ms10 ms100 ms1 s10 s
All stats (table view)
groupbenchp50avgp99minsamples
frame: pan fit-allv3 648 ms665 ms 660 ms643 ms 12
frame: pan fit-allgpu 16.7 ms16.7 ms 16.8 ms16.4 ms 121
frame: pan fit-allgpu (device) 3.71 ms3.71 ms 3.72 ms3.69 ms 121
frame: pan zoomed-in 20×v3 306 ms298 ms 312 ms211 ms 12
frame: pan zoomed-in 20×gpu 16.7 ms16.7 ms 17.0 ms16.5 ms 121
frame: pan zoomed-in 20×gpu (device) 4.90 ms4.90 ms 4.92 ms4.88 ms 121
frame: pan far-zoom ÷8v3 656 ms659 ms 702 ms630 ms 12
frame: pan far-zoom ÷8gpu 16.7 ms16.7 ms 16.9 ms16.4 ms 121
frame: pan far-zoom ÷8gpu (device) 692 µs666 µs 696 µs556 µs 121
frame: pan fit-all (labels)v3 752 ms771 ms 788 ms744 ms 11
frame: pan fit-all (labels)gpu 16.7 ms16.7 ms 16.8 ms16.5 ms 121
frame: pan fit-all (labels)gpu (device) 3.98 ms3.98 ms 4.00 ms3.96 ms 121
frame: pan zoomed-in 20× (labels)v3 313 ms307 ms 320 ms220 ms 12
frame: pan zoomed-in 20× (labels)gpu 16.7 ms16.7 ms 16.9 ms16.5 ms 121
frame: pan zoomed-in 20× (labels)gpu (device) 5.23 ms5.24 ms 5.26 ms5.22 ms 121
pick: hover while panninggpu 17.2 ms17.3 ms 17.7 ms5.10 ms 80
compaction: pan fit-all, 10% livegpu (peak slots) 16.7 ms16.7 ms 16.8 ms16.4 ms 121
compaction: pan fit-all, 10% livegpu (compacted) 16.7 ms16.7 ms 16.9 ms16.5 ms 122
compaction: pan fit-all, 10% livegpu device (peak slots) 436 µs435 µs 438 µs430 µs 121
compaction: pan fit-all, 10% livegpu device (compacted) 342 µs342 µs 343 µs340 µs 122
compaction: compact() one-shotgpu 9.20 ms9.20 ms 9.20 ms9.20 ms 1
init: create + readyv3 3.34 s3.34 s 3.34 s3.34 s 1
init: create + readygpu 97.4 ms97.4 ms 97.4 ms97.4 ms 1
init: create + ready (labels)v3 4.21 s4.21 s 4.21 s4.21 s 1
init: create + ready (labels)gpu 162 ms162 ms 162 ms162 ms 1
init: columnar form (gpu-only)gpu 81.0 ms81.0 ms 81.0 ms81.0 ms 1
init: columnar form (gpu-only)convert (toColumnarElements) 22.6 ms22.6 ms 22.6 ms22.6 ms 1
export: png full (≤2048 px)v3 1.65 s1.65 s 1.65 s1.65 s 1
export: png full (≤2048 px)gpu 320 ms320 ms 320 ms320 ms 1