Веб-сокеты через буферы протокола (protobufs) / бинарные и JSON / текстовые характеристики

Протобуфы отправляются как двоичные данные через WebSockets быстрее, чем JSON отправляются как текстовые данные через WebSockets? На бумаге это кажется правдой, даже с учетом небольших накладных расходов, возникающих при обработке байтов с обеих сторон. У кого-нибудь действительно была возможность попробовать это и получить какие-то конкретные результаты? Спасибо!

на этот вопрос невозможно задать / ответить без конкретики; например, для многих "небольших" сообщений: это не имеет значения - ключевым фактором производительности будет производительность сети, и в любом случае это будет один пакет данных; да, protobuf будет немного меньше (часто совсем немного), но для многих мелких сообщений это действительно не имеет значения. JSON, очевидно, требует много проще для работы из браузера. Но нет, я никогда не делал тяжелой работы, чтобы доказать это полностью.

Marc Gravell 14.12.2018 17:23
nilsmagnus.github.io/post/proto-json-sizes эта статья меня очень заинтриговала, и она показывает, что сообщения меньшего размера на самом деле не "совсем немного" меньше в protobufs, чем в json, но на самом деле намного меньше, действительно интересно
Brad 14.12.2018 19:05

Afaik, сообщения protobuf всегда будут занимать меньше места, чем их эквивалент JSON (возможно, за исключением таких вещей, как некоторые числовые литералы и т. д.), Поэтому их отправка всегда будет быстрее. Другой вопрос, сколько времени нужно на их кодирование / декодирование.

Michał 15.12.2018 04:52
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
4
3
3 009
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, я сделал небольшой проект для исследования этого и получил некоторые результаты. Вы можете найти проект здесь, вы можете найти больше информации в ПРОЧТИ МЕНЯ и в пакете results.

Чтобы ответить на вопрос; ДА, буферы протокола работают быстрее, чем JSON, более 100_000 сообщений, отправленных как пинг-понг (без обработки, кроме маршалинга и демаршалинга). Но разница не такая заметная, как я ожидал.

Другие вопросы по теме

Могу ли я улучшить производительность запроса, если использую несколько подзапросов и использую их результаты как условие для основного запроса?
Может ли компилятор java оптимизировать циклы для раннего возврата?
Эффективно использовать ирисовую диафрагму, чтобы комбинировать анализ радужной оболочки и агрегирование при выводе времени появления
Отставание игры Unity при тестировании на устройствах iOS
Уведомление о предупреждении о критериях работоспособности по умолчанию для мониторинга виртуальных машин Azure
Производительность обратных слов Python
Ускорение цикла vba
Что такое предварительный рендеринг и чем он отличается от рендеринга на стороне сервера?
Проблема производительности крупномасштабного моделирования мира Unity
Python быстро получает индекс элементов в большем списке, который также существует в меньшем списке