You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+6-7Lines changed: 6 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,13 @@ A small ([~50 KB min](https://github.com/leeoniya/uPlot/tree/master/dist/uPlot.i
5
5
---
6
6
### Introduction
7
7
8
-
μPlot is a [fast, memory-efficient](#performance)[Canvas 2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)-based chart for plotting [time series](https://en.wikipedia.org/wiki/Time_series), lines, areas, ohlc & bars. From a cold start it can create an interactive chart containing 170,000 data points in 25ms, scaling linearly at [~100,000 pts/ms](https://leeoniya.github.io/uPlot/bench/uPlot-10M.html) afterwards. In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at ~50 KB, it's likely the smallest and fastest time series plotter that doesn't make use of [context-limited](https://bugs.chromium.org/p/chromium/issues/detail?id=771792) WebGL shaders or WASM, both of which have much higher startup cost and code size.
8
+
uPlot is a [fast, memory-efficient](#performance)[Canvas 2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)-based chart for plotting [time series](https://en.wikipedia.org/wiki/Time_series), lines, areas, ohlc & bars. From a cold start it can create an [interactive chart containing 166,650 data points](https://leeoniya.github.io/uPlot/bench/uPlot.html) in 25ms, scaling linearly at [~100,000 pts/ms](https://leeoniya.github.io/uPlot/bench/uPlot-10M.html) afterwards. In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at ~50 KB, it's likely the smallest and fastest time series plotter that doesn't make use of [context-limited](https://bugs.chromium.org/p/chromium/issues/detail?id=771792) WebGL shaders or WASM, both of which have much higher startup cost and code size.
9
9
10
-
<h3align="center">166,650 point bench: <ahref="https://leeoniya.github.io/uPlot/bench/uPlot.html">https://leeoniya.github.io/uPlot/bench/uPlot.html</a></h3>
11
-
12
-
However, if you need 60fps performance with massive streaming datasets, uPlot [can only get you so far](https://huww98.github.io/TimeChart/docs/performance).
13
-
If you decide to venture into this realm with uPlot, make sure to [unclog your rendering pipeline](#unclog-your-rendering-pipeline).
14
-
WebGL should still be the tool of choice for applications like realtime signal or waveform visualizations:
15
-
See [danchitnis/webgl-plot](https://github.com/danchitnis/webgl-plot), [huww98/TimeChart](https://github.com/huww98/TimeChart), [epezent/implot](https://github.com/epezent/implot), or commercial products like [LightningChart®](https://www.arction.com/lightningchart-js/).
10
+
In most sane cases, you can live-stream data with uPlot at 60fps, though it may begin to struggle beyond 100k in-view points.
11
+
When [updating 3,600 points at 60fps](https://leeoniya.github.io/uPlot/demos/sine-stream.html), uPlot uses 10% CPU and 12.3MB RAM.
12
+
The next fastest Canvas-based libs (Chart.js and ECharts) use [40% / 77MB](https://leeoniya.github.io/uPlot/bench/Chart.js4-sine-stream.html) and [70% / 85MB](https://leeoniya.github.io/uPlot/bench/ECharts5-sine-stream.html), respectively.
13
+
If you need to stream, give [unclog your rendering pipeline](#unclog-your-rendering-pipeline) a try.
14
+
If that does not help, consider reducing the update frequency or switch to a WebGL/WebGPU solution, like [danchitnis/webgl-plot](https://github.com/danchitnis/webgl-plot), [huww98/TimeChart](https://github.com/huww98/TimeChart), [epezent/implot](https://github.com/epezent/implot).
0 commit comments