Size: a a a

2020 April 21

DE

Dmitry Ermakovich 🐍... in Go-go!
Andrei 🦉 Sergeev
мы для json используем тот же easyjson

для генерации http api мы используем go-swagger
а пробовали уйти с json в bson/ MessagePack / etc?
источник

AS

Andrei 🦉 Sergeev in Go-go!
Dmitry Ermakovich 🐍
а пробовали уйти с json в bson/ MessagePack / etc?
у нас используется далеко не только го и плюс большая часть апи доступна для сторонних клиентов, поэтому только универсальная связка http + json
источник

ВС

Владимир Столяров... in Go-go!
jsoniter обещает прирост неплохой
источник

ВС

Владимир Столяров... in Go-go!
(но я использую чисто из-за стримов на запись)
источник

AS

Andrei 🦉 Sergeev in Go-go!
btw, по опыту работы с msgpack - еще большой вопрос что эффективнее msgpack или json
первый компактнее если работаешь не со строками, но второй ест меньше ресурсов при маршалинге/анмаршалинге
источник

ВС

Владимир Столяров... in Go-go!
ну если нужна эффективность по размеру - добро пожаловать в schema-driven форматы (protobuf, avro, ...)
источник

A

Aleksandr in Go-go!
кто-нибудь пользовал серьёзно grpc (protobuf)?
очень хорошее описание api, отличный кодогенератор, http/2 (бинарный + кипэлайв "из коробки"), но все мои тесты скорости под нагрузкой показывают проигрыш grps тому же fasthttp + json...
источник

A

Aikidos in Go-go!
Andrei 🦉 Sergeev
у отсутствия фреймворков в го совсем другие причины, больше связанные со спецификой самого языка (фреймворки без дженериков и обобщенного программирования получаются на редкость убогими) и занимаемой языком нишей
Токсичненько, но доля правды тут есть. Обычно библиотеки имеют достаточно абстрактную реализацию, но стараются иметь достаточный уровень строгой типизации. Дженерики играют немаловажную роль в таком абстрагировании.
Поэтому выходит, что в го библиотеки либо заигрывают с пустыми интерфейсами, либо кодгеном.
Это плохо? Не знаю. Тут каждый сам решает.
Что с этим делать? Ждать, пока реализуют контракты.
источник

DE

Dmitry Ermakovich 🐍... in Go-go!
Andrei 🦉 Sergeev
btw, по опыту работы с msgpack - еще большой вопрос что эффективнее msgpack или json
первый компактнее если работаешь не со строками, но второй ест меньше ресурсов при маршалинге/анмаршалинге
Спасибо!
источник

in Go-go!
Aikidos
Токсичненько, но доля правды тут есть. Обычно библиотеки имеют достаточно абстрактную реализацию, но стараются иметь достаточный уровень строгой типизации. Дженерики играют немаловажную роль в таком абстрагировании.
Поэтому выходит, что в го библиотеки либо заигрывают с пустыми интерфейсами, либо кодгеном.
Это плохо? Не знаю. Тут каждый сам решает.
Что с этим делать? Ждать, пока реализуют контракты.
Мне кажется, контрактов стоит ждать до второго пришествия
источник

A

Aikidos in Go-go!
Мне кажется, контрактов стоит ждать до второго пришествия
Я думаю, что такое неспешное развитие языка имеет под собой основание.
источник

A

Aleksandr in Go-go!
Andrei 🦉 Sergeev
мы для json используем тот же easyjson

для генерации http api мы используем go-swagger
easyjson - спасибо, посмотрю (уже попадался в советах, но что-то не потестил)
(сваггер да, тут почти стандарт для http/json)
источник

in Go-go!
Aikidos
Я думаю, что такое неспешное развитие языка имеет под собой основание.
В принципе согласен, но это нисколько не отменяет того факта, что ждать придётся до второго пришествия )
источник

x

x-foby in Go-go!
Aleksandr
советуйте плиз
для http есть fasthttp, но надо признать, что только если он реально нужен, так как "из коробки" удобнее.
советуйте плиз для json! из коробки удобный, но просто дич тормозной (в разы медленнее всех популярных либ в языках java/python/php/js...)
Ну если вы json будете демаршилить в map[string]interface{}, []interface{} или даже просто interface{}, что, по сути, и делают те же самые js, python и php (не всегда), то он перестанет быть настолько тормозным.
Всё равно будет уступать, но разница всё-таки будет уже другой.

Когда сравнивают коробочный маршалер/демаршалер с динамическими языками, почему-то забывают, что в случае Go львиную долю занимает маппинг, которого в вышеперечисленных языках нет.
источник

A

Aleksandr in Go-go!
x-foby
Ну если вы json будете демаршилить в map[string]interface{}, []interface{} или даже просто interface{}, что, по сути, и делают те же самые js, python и php (не всегда), то он перестанет быть настолько тормозным.
Всё равно будет уступать, но разница всё-таки будет уже другой.

Когда сравнивают коробочный маршалер/демаршалер с динамическими языками, почему-то забывают, что в случае Go львиную долю занимает маппинг, которого в вышеперечисленных языках нет.
в этом есть правда, но...
и даже в пустой map unmarshal в разы тормознее...
(+ я делаю тесты с использованием полей всё же заставляя включаться мэппингу, точнее преобрабованиям)
источник

A

Aleksandr in Go-go!
ну и сравнение с java например дало мне в 2 раза меньшую скорость, а там и там одинаковый полный мэппинг на типы
источник

x

x-foby in Go-go!
Aleksandr
ну и сравнение с java например дало мне в 2 раза меньшую скорость, а там и там одинаковый полный мэппинг на типы
Ну, когда речь заходит о производительность всерьёз, можно просто использовать решения на кодгене (одно из которых вам и посоветовали выше).
Вообще весь мой спич выше был не столько оправданием коробочного решения, сколько просто мыслями вслух) Просто о сравнении с динамическими языками.
Так что сильно всерьёз не принимайте)
источник

A

Aleksandr in Go-go!
x-foby
Ну, когда речь заходит о производительность всерьёз, можно просто использовать решения на кодгене (одно из которых вам и посоветовали выше).
Вообще весь мой спич выше был не столько оправданием коробочного решения, сколько просто мыслями вслух) Просто о сравнении с динамическими языками.
Так что сильно всерьёз не принимайте)
я очень ценю любую критику, только так можно узнать новое ;) так что напротив - продолжайте...
(и хоть сравнение с java было правдой, но вы немного заставили меня задуматься над одной идеей...)
источник

A

Aleksandr in Go-go!
воспользуюсь паузой )))
если кому интересно - мне (в мою команду) нужно много всяких программистов и golang'истов толковых в частности!
(пишите в личку, если есть такие, которые не против прийти к нам)
извиняюсь за офтоп... (ну не совсем же!)
источник

x

x-foby in Go-go!
Aleksandr
я очень ценю любую критику, только так можно узнать новое ;) так что напротив - продолжайте...
(и хоть сравнение с java было правдой, но вы немного заставили меня задуматься над одной идеей...)
Что за идея, если не секрет?
источник