Вчера наконец сделал первую имплементацию поточного парсера JSON. Месяцы обдумывания что нужно сделать, и пара часов на начальную версию плюс часа три на оптимизацию и полировку. Текущие цифры не так сильно удручают как первичные, но пока далеко до нативного JSON.parse()

(тут parse: начальная версия -> текущая)



Webpack stats (~500mb с форматированием)

parse: 13.047s -> 4.946s

JSON.parse(): 1.258s



fixture 100mb

parse: 5.661s -> 1.424s

JSON.parse(): 559.153ms



fixture 13.7mb

parse: 303.423ms -> 140.015ms

JSON.parse(): 39.643ms



fixture 2mb

parse: 204.93ms -> 102.851ms

JSON.parse(): 11.838ms



Это будет частью json-ext, пока живет в ветке. Еще нужно просмотреть свежим взглядом, добавить тестов и обкатать на живых проектах.