在使用Highcharts的效率方面。如果服务器发送点数组(一次大约5,000个)。使用addPoint方法并添加每个点是否更有效?或者使用新夹头联系上一个阵列并致电redraw()
for(let point in newData) series.addPoint(point, redraw = false)
oldData = oldData.concat(newData)
Highcharts会重新渲染所有点还是只重新渲染新部分?
答案 0 :(得分:1)
正如@wergeld建议的那样,我尝试了两种选择。
数据如下所示:[{x:1, y:2, step: 1}, {x:2, y:3, step: 2}...]
我运行相同的数据大小几次以获得平均值。
选项1(addPoint)
代码如下:
newData.forEach(el=> chart.series[0].addPoint(el, false, false, true))
chart.redraw();
结果是:
DataSize | Seconds
-------------------
877 | 0.5
8770 | 1.5
17540 | 8.5
87700 | 563
选项2(setData / concat)
代码如下:
chart.series[0].setData(oldData.concat(newData))
结果是:
DataSize | Seconds
-------------------
877 | 0.5
8770 | 1.85
17540 | 3.4
87700 | 15
175400 | 25
877000 | 190
很明显,当每个数据块的数据大小超过10k时,addPoint
方法的速度会明显变慢。