@Y0MMY

Как можно ускорить парсинг json?

У меня есть файл price.json (897 КБ),который парится:

var values = [11,694];
    var t0 = performance.now();
    var myInit = {
      method: 'GET',
      headers: {
        'Content-Type':'application/json' 
      },
      mode: 'cors',
      cache: 'default'
    };
    let myRequest = new Request("price.json",myInit);
    (async () => { fetch(myRequest)
        .then(function(resp){
          return resp.json();
        })
        .then(function(data){
          console.log(data);
          for (let i = 0; i < document.getElementsByName('js-price').length; i++) {
            document.getElementsByName('js-price')[i].innerHTML = "$" + Number(data[values[i]]['lastPrice']).toFixed(2); //694
            document.getElementsByName('js-price-percent')[i].innerHTML = Number(data[values[i]]['priceChangePercent']).toFixed(2); //694
            
          }
          console.log(`Время закгрузки JSON ${(performance.now() - t0).toFixed(2)}`); 
        })
      })();


В среднем занимается 89мс, что очень долго, можно как-то ускорить время парсинга?
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
@rPman
897kb
надо почти мегабайт скачать! я не верю что у тебя с твоим интернетом за 80миллисекунд это происходит, скорее все из кеша берется

на парсинг json как раз уходит несколько десятков миллисекунд, и это нереально быстро для мегабайтового файла

p.s. на c++ есть парсер simdjson, он в десять раз быстрее парсит, но делает он это не в память, а по лексемам, прямо в процессе анализа результата, там что то типа, получить следующую лексему, смотрим ее тип, имя и либо пропускаем (включая объхекты) либо рекурсивно работаем с объектом

браузер так не умеет, в теории можно попробовать написать такой парсер на javascript но я не верю что это будет быстрее

upd: https://www.npmjs.com/package/simdjson
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы