Javascript Highcharts JS在使用多个数据点进行更新时变得非常缓慢
我有一个静态本地网页,该网页应该使用csv文件中的数据进行更新(因此,当数据写入该文件时,该页面应该更新并显示新数据)。我的问题是,对于许多数据点,它会变得非常缓慢,在一定数量的点之后,它将根本不会更新 目前,页面更新的方式是每3秒读取一次文件并相应地更新。我认为更有效的方法是查看文件中最近添加的内容,然后将这些新点添加到当前数据集中。我只是不知道该怎么做 下面的代码解析csv文件,并将数据分离到要在图表中使用的阵列:Javascript Highcharts JS在使用多个数据点进行更新时变得非常缓慢,javascript,csv,highcharts,Javascript,Csv,Highcharts,我有一个静态本地网页,该网页应该使用csv文件中的数据进行更新(因此,当数据写入该文件时,该页面应该更新并显示新数据)。我的问题是,对于许多数据点,它会变得非常缓慢,在一定数量的点之后,它将根本不会更新 目前,页面更新的方式是每3秒读取一次文件并相应地更新。我认为更有效的方法是查看文件中最近添加的内容,然后将这些新点添加到当前数据集中。我只是不知道该怎么做 下面的代码解析csv文件,并将数据分离到要在图表中使用的阵列: function parseCSVData(csvFile) {
function parseCSVData(csvFile) {
time = [];
altitude = [];
outsideTemp = [];
insideTemp = [];
voltage = [];
state = [];
velocity = [];
degrees = [];
// cut CSV dataFiles into lines
var lines = csvFile.split("\n");
$.each(lines, function (lineNumber, line) {
if (lineNumber != 0) { // skip header line
var fields = line.split(",");
var missionTime = parseInt(fields[1]);
var altitude2 = parseInt(fields[2]);
var outsideTemp2 = parseInt(fields[3]);
var insideTemp2 = parseInt(fields[4]);
var voltage2 = parseInt(fields[5]);
var state2 = parseInt(fields[6]);
var velocity2 = parseInt(fields[7]);
var degrees2 = parseInt(fields[8]);
time.push(missionTime);
altitude.push(altitude2);
outsideTemp.push(outsideTemp2);
insideTemp.push(insideTemp2);
voltage.push(voltage2);
state.push(state2);
velocity.push(velocity2);
degrees.push(degrees2);
}
});
}
这是每3秒更新图表的代码:
setInterval(function blah() {
var file = fileName+'?q='+Math.random();
fillCharts(file);//which calls the parseCSVData function and fills the charts
}, 3000);
编辑:带有完整代码的粘贴箱:
EDIT2:示例csv数据:
TEAM_ID,MISSION_TIME,ALT_SENSOR,OUTSIDE_TEMP,INSIDE_TEMP,VOLTAGE,FSW_STATE,VELOCITY,DEGREES
ubArtemis,0,36,20,20,9,1,0,0
ubArtemis,1,45,18,20,9,1,6,2
ubArtemis,2,200,16,20,9,1,10,5
ubArtemis,3,65,14,19,9,1,15,3
ubArtemis,4,79,12,17,8,2,22,4
ubArtemis,5,100,10,16,8,3,30,2
ubArtemis,6,120,8,15,8,4,39,0
fillCharts
中有什么?如果你只做解析,那么它慢吗?我认为可能有一些更新操作可以优化。至少这是一个常见的问题-函数。在您的实际场景中,您是否从单个文件读取?对该文件的更改是否总是附加额外的行,或者现有行的内容是否被更改?@Ondkloss我在代码中添加了一个pastebin链接。fillCharts仅初始化网页的6个图表。它有200行长,而且非常重复,所以我没有粘贴它originally@SMcCrohan它应该从单个已定义的csv文件中读取,并且附加数据作为行。看起来您正在为每次更新完全重新生成所有图表。这是一种极大的矫枉过正,而且性能代价高昂。您应该找到一些方法来只更新新的/更改的数据。我不确定您的CSV会发生什么变化,但您可能需要Chart.addSeries
,Series.addPoint
,Series.setData
,Series.update
。。。