LINUX.ORG.RU

История изменений

Исправление 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 подходом.