JS Json解析速度更快的替代方法

时间:2019-09-25 11:46:42

标签: javascript json http xmlhttprequest esp32

我有一个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);
    }
}

我在徘徊如何加快代码执行速度 无论是在已使用的内存还是在执行时间方面。

  • 我可以在javascript中解析原始数据吗?
  • 我可以将JSON.parse更改为另一个用于加速的功能吗?
  • 我可以将XMLHttpRequest更改为另一个以便在数据仍被发送时开始解析数据吗?

0 个答案:

没有答案