All demos › Performance
ApexMaps performance
Measured in this browser, on this machine. Frame times are real rAF deltas during a scripted
pan and zoom, not a simulation. Parse is JSON.parse of the pack and
Render is library work on already-parsed geometry, so neither includes the network.
Reproject switches to Plate Carrée, which rebuilds every path, so it isolates path
generation from projection maths. Note the asymmetry on US counties: the initial render uses
the pack's recommended albersUsa, a composite of three sub-projections with a
point-in-region test per coordinate, and it costs roughly three times a simple projection.
| Case | Features | Parse | Render | Reproject | Labels | JS/frame p95 | Frame p50 | Frame p95 | Worst | Dropped | p95 budget |
|---|
Budget: p95 pan and zoom frame under 16 ms at 3,000 features.
Panning writes one transform on one group, so the per-frame cost in library code is constant
in the feature count; what scales is the browser rasterising the paths. That is the point of
keeping features in world space instead of reprojecting them.
Read Dropped and JS/frame, not Frame p50. With headroom, rAF
intervals are clamped to the display's refresh rate, so a p50 of 8.3 ms means "120 Hz
display", not "8.3 ms of work". Dropped counts frames that overran their refresh interval by
half again, which is what a user perceives as stutter.