tgoop.com/hft_dev/38
Last Update:
Есть один очень мощный разработчик и исследователь Daniel Lemire (Блог, Github, X). Помимо прочего, он подарил нам simdjson, состоящий полностью из магии шаблонов, магии битовой арифметики, и магии SIMD.
В этом докладе Daniel рассказывает уроки, полученные при разработке библиотеки: https://www.youtube.com/watch?v=wlvKAT7SZIQ:
Что можно делать и не делать для ускорения парсинга, как избегать branch mispredictions, как ускорить валидацию utf-8, классификацию символов, обработку escape characters, про дорогой парсинг чисел, и про runtime dispatcing по архитектуре. Видео из 2019 года, с тех пор Даниэль и мейнтейнеры провели еще немало оптимизаций.
Если ты хорошо знаешь свои данные, то ты можешь достичь ещё большей скорости. Например, за счёт:
- шаблонных парсеров, настраиваемых на конкретное нюансы конкретного json'а
- знания структуры документа
- знания, что не будет unicode символов
- знания, что не будет whitespaces между значимыми символами
- знания, что не будет escape characters (\)
- пропуска ненужных тебе полей или всего сообщения (при определенных условиях)
- использования доп. потоков (пример)
Конечно, это не подходит для библиотек, для клиентских приложений, это очень хрупко, и не всегда парсинг json является самым узким местом.
BY Один микросек - C++, low latency, concurrency, HFT
Share with your friend now:
tgoop.com/hft_dev/38