- PVSM.RU - https://www.pvsm.ru -
Для любителей красивых конфигов — вышел JS-YAML 2.0.0 [1], с новыми плюшками:
Основной целью переделки было улучшить скорость парсинга. Чтобы не возникало потребности в биндингах к внешним библиотекам вроде libyaml. Ведь в ямле удобно хранить не только конфиги, но и переводы, которых может быть довольно много. Желающие могут скачать бенчмарк и проверить на собственных файлах:
github.com/dervus/js-yaml-benchmark [2]
С образцами на 200К (и вырезанными комментариями) на мелком macbook air получилась скорость парсинга 2мб/сек. Это не предел, просто быстрее пока не надо :).
Самое большое ускорении было достигнуто за счет переделки архитектуры. Изначально это был порт PyYAML, который не столько быстрый, сколько референсный. Поэтому там была многопроходная обработка, со всякими странными штуками вроде событий. В новом варианте парсинг делается в 1 проход.
Вторая часть оптимизаций была связана с v8. Если кратко, она заключается в том, чтобы не использовать this и не переприсваивать одной переменной разные типы. Там еще есть что улучшать, но получилось и так быстро. А поскольку лишнего времени не бывает, пока остановились на том, что есть. Всем, кто интересуется нюансами, очень рекомендую лекцию Вячеслава Егорова http://youtu.be/tCG0aPNvkTs [3] о работе оптимизатора и инлайновых кешах v8.
Автор: Vitaly
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/26745
Ссылки в тексте:
[1] JS-YAML 2.0.0: https://github.com/nodeca/js-yaml
[2] github.com/dervus/js-yaml-benchmark: https://github.com/dervus/js-yaml-benchmark
[3] http://youtu.be/tCG0aPNvkTs: http://youtu.be/tCG0aPNvkTs
[4] Источник: http://habrahabr.ru/post/168821/
Нажмите здесь для печати.