Size: a a a

WebAssembly — русскоговорящее сообщество

2018 December 19

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
я к тому, что протобаф сам себя не десериализует
источник

RS

Roman Sharkov in WebAssembly — русскоговорящее сообщество
Random Balance
Смотря какая эффективность нужна. Если минимизация передаваемых данных - возможно. Например, нам нужно передавать очень много событий для условной игры (движение мышью, клики, время события). Если передавать строкой, то 13 байт на время, 8 байт (xxxx*xxxx) на координаты, 1 байт на событие, т.е. 22 байта на одно событие, а если в бинарном то 13 байт достаточно. Т.е. тут преимущество почти в два раза. Но со строками мне не понятно, если они нужны и будут занимать основную часть данных, то экономия 10-20 байт вообще не влияет на размер пакета в процентном соотношении.

По поводу скорости парсинга. Я понимаю что серверу может быть нужно парсить сотни тысяч сообщений в секунду. Но клиенту зачем? Вот я взял среднее JSON сообщение весом 1.5 Кб, за 1 секунду JSON.parse() разбирает 50 тыс. таких сообщений. И это без всяких воркеров и на одном ядре.

Если одной пачкой 10к сообщений:
Time: 151.4000 ms, size: 5.30 Mb.

Даже не представляю зачем на клиенте может быть нужно такое. Мне кажется это никогда не будет узким местом. Было бы интересно услышать если у кого-то есть примеры где это хоть сколько-то может повлиять на производительность.
снижение footprint’а коммуникации в целом.
источник

RS

Roman Sharkov in WebAssembly — русскоговорящее сообщество
Vsevolod Rodionov
я, может, не очень умный, но 95% задач бинарных сообщений на фронте может решить либо msgpack, либо протобуф
в protobuf.js я вижу результаты бенчмарков довольно убедительные https://github.com/dcodeIO/ProtoBuf.js/#performance
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
Я предпочитаю pbf
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
Как минимум выигрыш в размере)
источник

RS

Roman Sharkov in WebAssembly — русскоговорящее сообщество
то что делает protobuf по сути можно бы было добиться и в синтетическом бенчмарке.. только почему у меня вышли такие поганые результаты особенно в safari))
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
Vsevolod Rodionov
Как минимум выигрыш в размере)
псс, парень, не хочешь ли немного flatbuffers?
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
ох уж эти конкурирующие стандарты гугла
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
но нет, я о размере библиотеки
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
pbf весит какие-то копейки вообще смешные
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
эм, какой библиотеки?
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
тебе еще эту "библиотеку" сгенерировать надо
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
и у флетбафферс сгенеренный по схеме код меньше
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
как и Library source code (KB) там в таблице тащем-та
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
ну и protobuf.js вроде генерил меньше кода, чем protoc емнип
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
ну и для JSON вообще кода 0 :)
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
а, вот какой-то pbf от mapbox, ты про него? с protobuf.js сравнивал?
https://github.com/mapbox/pbf
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
ага, он. по перформансу у него сравнение было, но может быть неактуальным. а по футпринту он все еще впереди
источник

VR

Vsevolod Rodionov in WebAssembly — русскоговорящее сообщество
но у меня не было задачи супер-быстрого декода, я тупо трафик им экономлю, числа передавать жсоном очень накладно
источник