Смотря какая эффективность нужна. Если минимизация передаваемых данных - возможно. Например, нам нужно передавать очень много событий для условной игры (движение мышью, клики, время события). Если передавать строкой, то 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’а коммуникации в целом.