История изменений
Исправление sarumeister, (текущая версия) :
Покажи, во что конкретно ты предлагаешь разворачивать код для заполнения структуры.
Признаюсь, до сегодня парсинг JSON в структуры у меня был сделан плохо (какая-то часть веб-сервиса на С++, sax на RapidJSON). Соответственно, как должно быть правильно — могу единственно подсмотреть в стд зига (lib/std/json/static.zig). Посмотрел, мне понравилось. С точки зрения си-программиста, некоторые фичи я бы поленился реализовать на макросах (если бы вообще смог). Реализация прямолинейная, я думал будет сложнее. Также выяснил, что оптимизации в плане сопоставления полей делает LLVM, а не комптайм.
Делюсь ссылкой на годболт со своим финальным экспериментом. Бинарь в таком виде получился порядка 60к.
https://godbolt.org/z/v6vr6EfaK
Обычно в программах тормозят совсем не «парсеры JSON»
Перечисленные тормоза out-of-scope. Здесь оценивается JSON->структуры.
Исходная версия sarumeister, :
Покажи, во что конкретно ты предлагаешь разворачивать код для заполнения структуры.
Признаюсь, до сегодня парсинг JSON в структуры у меня был сделан плохо (какая-то часть веб-сервиса на С++). Соответственно, как должно быть правильно — могу единственно подсмотреть в стд зига (lib/std/json/static.zig). Посмотрел, мне понравилось. С точки зрения си-программиста, некоторые фичи я бы поленился реализовать на макросах (если бы вообще смог). Реализация прямолинейная, я думал будет сложнее. Также выяснил, что оптимизации в плане сопоставления полей делает LLVM, а не комптайм.
Делюсь ссылкой на годболт со своим финальным экспериментом. Бинарь в таком виде получился порядка 60к.
https://godbolt.org/z/v6vr6EfaK
Обычно в программах тормозят совсем не «парсеры JSON»
Перечисленные тормоза out-of-scope. Здесь оценивается JSON->структуры.