JSON, петухон и прочее высоколобство
Jul. 8th, 2020 06:09 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Доподлинно знаю одну уважаемую контору, в которой плюсовики Питон иначе, как "петухоном" не называют. Ну он же тормозной, однопоточный и для дебилов - за то время, пока начинающий питонист уже начнет что-то говнокодить, тру начинающий плюсовик только начнет въезжать в RAII и STL. Но это лирика.
А тут вот начали опять в инете срать JSON за многословность и избыточность, и предлагать вместо него protobuf (в комментах справедливо помянули msgpack, который, как по мне, менее у**ищен, чем protobuf).
Да без фигни бинарный формат короче текстового, схематизированный короче несхематизированного, и оба быстрее парсятся. Но тут порылась собака в виде преждевременной оптимизации.
Да, мы все мним себя гуглами и амазонами (которым это при их сотнях кило-rps и мега-rps-ах актуально). Но пусть мы крепенькая такая контора с 36к заказов в день. Пусть это все прилетает за 10 часов - это... 1 rps. Ну пусть будет 10. Пусть у нас на каждый заказик (у нас же микросервисы, ема) летает сотня килобайтных JSON-ов. Пусть тысяча.
Итого у нас 10krps и 10 Мбайт/с (пусть 100 Мбит/с) внутреннего трафика. Прямо скажем, не тот трафик, чтобы оптимизировать. Да и затраты на разбор-сбор JSON-ов не займут большую часть процессорного времени.
А вот в чем мы круто выигрываем, так это в читабельности и дебаге. Да, схема занимает место, но вот она, родимая, перед глазами. И формат текстовый, то есть дамп трафика можно читать без hex-editor-а.
Какой-то умный человек написал, что в бизнес-программировании затраты на написание кода многократно превосходят затраты на его исполнение. Для интернет-гигантов и жесткого промышленного риалтайма это не так (и там как раз правят бал и плюсы, и няшна сишка), а вот в более частом случае конторы купи-продай это именно так, а потому питончик с джейсончиками вполне себе жив. И это я даже про похапе не сказал.
Не надо, короче, срать JSON. Очень хороший компромисс между машино- и человеко-читаемостью. Я бы сказал, офигенный дефолтный вариант для почти всего, если не получается обосновать, почему что-то другое лучше. И в львиной доле случаев его хватает.
А тут вот начали опять в инете срать JSON за многословность и избыточность, и предлагать вместо него protobuf (в комментах справедливо помянули msgpack, который, как по мне, менее у**ищен, чем protobuf).
Да без фигни бинарный формат короче текстового, схематизированный короче несхематизированного, и оба быстрее парсятся. Но тут порылась собака в виде преждевременной оптимизации.
Да, мы все мним себя гуглами и амазонами (которым это при их сотнях кило-rps и мега-rps-ах актуально). Но пусть мы крепенькая такая контора с 36к заказов в день. Пусть это все прилетает за 10 часов - это... 1 rps. Ну пусть будет 10. Пусть у нас на каждый заказик (у нас же микросервисы, ема) летает сотня килобайтных JSON-ов. Пусть тысяча.
Итого у нас 10krps и 10 Мбайт/с (пусть 100 Мбит/с) внутреннего трафика. Прямо скажем, не тот трафик, чтобы оптимизировать. Да и затраты на разбор-сбор JSON-ов не займут большую часть процессорного времени.
А вот в чем мы круто выигрываем, так это в читабельности и дебаге. Да, схема занимает место, но вот она, родимая, перед глазами. И формат текстовый, то есть дамп трафика можно читать без hex-editor-а.
Какой-то умный человек написал, что в бизнес-программировании затраты на написание кода многократно превосходят затраты на его исполнение. Для интернет-гигантов и жесткого промышленного риалтайма это не так (и там как раз правят бал и плюсы, и няшна сишка), а вот в более частом случае конторы купи-продай это именно так, а потому питончик с джейсончиками вполне себе жив. И это я даже про похапе не сказал.
Не надо, короче, срать JSON. Очень хороший компромисс между машино- и человеко-читаемостью. Я бы сказал, офигенный дефолтный вариант для почти всего, если не получается обосновать, почему что-то другое лучше. И в львиной доле случаев его хватает.