What does a performance optimization discard?

Each comparison supplies identical input to uPlot and another library. All reduction and grouping occur inside the libraries.

The left chart uses uPlot’s default linear-path decimation. It preserves pixel-column extrema, without averaging spikes or selecting only one point per bucket.

The right chart uses the labeled native algorithm. Opt-in settings are explicit. Sampling targets, activation thresholds, and grouping budgets keep their library defaults.

These examples are not speed tests. They show accuracy tradeoffs that timing benchmarks alone cannot establish.

Loading…

uPlot — default linear path, pixel-column extrema
Developer details — magnified paths

These troubleshooting views compare different rendering stages, not equivalent final images. Magnification exaggerates subpixel differences that can be invisible in the full-range charts.

uPlot — rendered path

Magnified uPlot path from the full-range chart, including its gap clip and pixel rounding.

Other library — processed data

Magnified polyline through the processed points, before renderer-specific rounding or further simplification. Unavailable when the library exposes no verified output.

How to read the comparison

Libraries load on demand from the benchmark dependency manifest. Network access is required for vendor bundles.

Native optimization documentation: ECharts sampling · Chart.js decimation · ApexCharts chart settings · amCharts grouping · DevExtreme aggregation · AnyStock grouping · FusionTime binning.

More decimation examples · All demos