Вчера наконец сделал первую имплементацию поточного парсера 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, пока живет в ветке. Еще нужно просмотреть свежим взглядом, добавить тестов и обкатать на живых проектах.
(тут 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, пока живет в ветке. Еще нужно просмотреть свежим взглядом, добавить тестов и обкатать на живых проектах.