Javascript Json解析更快的替代方案
我有一个esp32芯片(带有WiFi通信的32位微控制器),可以将重要数据记录到本地内存中。我需要将这些数据发送给用户webbrowser以绘制图表。它大约每小时1MB,我需要有最多5天数据(最多120MB原始数据)的图表 目前,我已经编写了一个http服务器和JSON解析器。当用户请求数据时,从内存中读取原始数据并将其解析为JSON以进行打磨。将原始数据解析为文本json会导致将每个1MB(原始)扩展为大约2MB(文本) 本地浏览器等待JSON文件,并使用JS JSON.parse(this.responseText)将其解析为对象以添加到数组中 JSON.parse占用了很多时间!每2MB约5秒(1MB未加工)Javascript Json解析更快的替代方案,javascript,json,http,xmlhttprequest,esp32,Javascript,Json,Http,Xmlhttprequest,Esp32,我有一个esp32芯片(带有WiFi通信的32位微控制器),可以将重要数据记录到本地内存中。我需要将这些数据发送给用户webbrowser以绘制图表。它大约每小时1MB,我需要有最多5天数据(最多120MB原始数据)的图表 目前,我已经编写了一个http服务器和JSON解析器。当用户请求数据时,从内存中读取原始数据并将其解析为JSON以进行打磨。将原始数据解析为文本json会导致将每个1MB(原始)扩展为大约2MB(文本) 本地浏览器等待JSON文件,并使用JS JSON.parse(this.
函数loadChartData(地址){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=loadChartDataReady;
xhttp.open(“GET”http://192.168.1.1/“+地址,正确);
xhttp.send();
}
函数loadChartDataReady(){
如果(this.readyState!=4)返回;
如果(this.status!=200){return;}
试一试{
var json=json.parse(this.responseText);
for(var i=1;i
我在想我能做些什么来加速我的代码
在使用的内存和执行时间方面
- 我可以用javascript解析原始数据吗李>
- 我可以将JSON.parse更改为其他函数以加快速度吗
- 我是否可以将XMLHttpRequest更改为另一种格式,以便在数据仍在发送时开始解析数据
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);
}
}