使用Highcharts附加数据(实时更新图表)

时间:2018-02-07 15:26:09

标签: javascript highcharts

在使用Highcharts的效率方面。如果服务器发送点数组(一次大约5,000个)。使用addPoint方法并添加每个点是否更有效?或者使用新夹头联系上一个阵列并致电redraw()

  • 选项1:

for(let point in newData) series.addPoint(point, redraw = false)

  • 选项2:

oldData = oldData.concat(newData)

Highcharts会重新渲染所有点还是只重新渲染新部分?

1 个答案:

答案 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方法的速度会明显变慢。