История изменений
Исправление foror, (текущая версия) :
А я давно твержу, что физики и прочие олимпиадники от математики в прикладных направлениях - зло. Да, легко проходят собеседование в гугл и прочий фаанг, но потом от них в ИТ такая дичь за наши деньги. Ну, сидели бы в своих НИИ и ресёрчили полеты к звёздам. Так нет.
Ладно, специально для soomrack и AntonI: В simdjson нет секретных ингредиентов, только SIMD! Во всех других направлениях, что можно было оптимизировать давно оптимизировано в прочих JSON либах.
Но благодаря SIMD существенные результаты доситгаются в следующих случаях:
-
Валидация JSON от сторонних источников. Например, у вас нагруженный REST сервис и вам нужно делать проверку поступающих данных без разложения структур данных в памяти.
-
Структуированный поиск по JSON файлу или СУБД. Например, в PostgreSQL есть JSONB формат хранения данных. Многие REST сервисы предоставляют выгрузку JSON файлов. Либо один файл на гигабайты, либо множество мелких файлов того же размера. Например, наша налоговая и другие гос. сервисы дают такие выгрузки общедоступных данных.
-
Последовательная обработка JSON файла без построения всего дерева в памяти. Аналогом в XML является SAX парсеры. Как в JSON это называется не в курсе.
-
Тот самый парсинг. Да, это не даёт существенный выигрыш, но за счёт выкидывания условных переходов при проверке токенов благодаря SIMD инструкциям и использованию масок мы получаем хороший прирост производительности. По сравнению с классическим циклом и switch-case подходом.
Исправление foror, :
А я давно твержу, что физики и прочие олимпиадники от математики в прикладных направлениях - зло. Да, легко проходят собеседование в гугл и прочий фаанг, но потом от них в ИТ такая дичь за наши деньги. Ну, сидели бы в своих НИИ и ресёрчили полеты к звёздам. Так нет.
Ладно, специально для soomrack и AntonI: В simdjson нет секретных ингредиентов, только SIMD! Во всех других направлениях, что можно было оптимизировать давно оптимизировано в прочих JSON либах.
Но благодаря SIMD существенные результаты доситгаются в следующих случаях:
-
Валидация JSON от сторонних источников. Например, у вас нагруженный REST сервис и вам нужно делать проверку поступающих данных без разложения структуры данных в памяти.
-
Структуированный поиск по JSON файлу или СУБД. Например, в PostgreSQL есть JSONB формат хранения данных. Многие REST сервисы предоставляют выгрузку JSON файлов. Либо один файл на гигабайты, либо множество мелких файлов того же размера. Например, наша налоговая и другие гос. сервисы дают такие выгрузки общедоступных данных.
-
Последовательная обработка JSON файла без построения всего дерева в памяти. Аналогом в XML является SAX парсеры. Как в JSON это называется не в курсе.
-
Тот самый парсинг. Да, это не даёт существенный выигрыш, но за счёт выкидывания условных переходов при проверке токенов благодаря SIMD инструкциям и использованию масок мы получаем хороший прирост производительности. По сравнению с классическим циклом и switch-case подходом.
Исходная версия foror, :
А я давно твержу, что физики и прочие олимпиадники от математики в прикладных направлениях - зло. Да, легко проходят собеседование в гугл и прочий фаанг, но потом от них в ИТ такая дичь за наши деньги. Ну, сидели бы в своих НИИ и ресёрчили полеты к звёздам. Так нет.
Ладно, специально для soomrack и AntonI: В simdjson нет секретных ингредиентов, только SIMD! Во всех других направлениях, что можно было оптимизировать давно оптимизировано в прочих JSON либах.
Но благодаря SIMD существенные результаты доситгаются в следующих случаях:
-
Валидация JSON от сторонних источников. Например, у вас нагруженные REST сервис и вам нужно делать проверку поступающих данных без разложения структуры данных в памяти.
-
Структуированный поиск по JSON файлу или СУБД. Например, в PostgreSQL есть JSONB формат хранения данных. Многие REST сервисы предоставляют выгрузку JSON файлов. Либо один файл на гигабайты, либо множество мелких файлов того же размера. Например, наша налоговая и другие гос. сервисы дают такие выгрузки общедоступных данных.
-
Последовательная обработка JSON файла без построения всего дерева в памяти. Аналогом в XML является SAX парсеры. Как в JSON это называется не в курсе.
-
Тот самый парсинг. Да, это не даёт существенный выигрыш, но за счёт выкидывания условных переходов при проверке токенов благодаря SIMD инструкциям и использованию масок мы получаем хороший прирост производительности. По сравнению с классическим циклом и switch-case подходом.