我有一个esp32芯片(具有WiFi通讯的32位微控制器),可将重要数据记录到本地内存中。我需要将这些数据发送到用户Web浏览器以绘制图表。大约每小时1MB,我需要具有最多5天数据(最多120MB原始数据)的图表。
目前,我已经编写了一个http服务器和JSON解析器。当用户请求数据时,会读取内存中的原始数据并将其解析为JSON以进行打磨。将原始数据解析为文本json会导致将每个1MB(原始)扩展到大约2MB(文本)。
本地浏览器等待JSON文件,并使用JS JSON.parse(this.responseText)将其解析为对象以添加到数组中。
JSON.parse花了很多时间!每2MB(原始1MB)大约需要5秒。
function loadChartData(address) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = loadChartDataReady;
xhttp.open("GET", "http://192.168.1.1/"+address, true);
xhttp.send();
}
function loadChartDataReady() {
if (this.readyState != 4) return;
if (this.status != 200) { return; }
try {
var json = JSON.parse(this.responseText);
for(var i = 1; i < json.length; i++) {
var obj = json[i];
series.splice(i - 1, 0, {ts: obj[0], time: obj[1], s: obj[2], m: obj[3], on: obj[4]} );
}
updateChart();
} catch(err) {
console.log("error: " + err);
}
}
我在徘徊如何加快代码执行速度 无论是在已使用的内存还是在执行时间方面。