1. конкретной задачи нет, проект скорее эксперементальный и задача получить наиболее эффективный способ передачи данных.
2. размер может сильно вариировать, от одной строки до вложенного графа 4 уровней
3. в данном контексте это опять-же не особо релевантно, ибо речь о максимально достижимой эффективности нежели о решении конкретной проблемы
4.
https://jsperf.com/binary-vs-json в этом бенчмарке я вроде не допускал ошибок в его использовании, и тем не менее он сильно проиграл. Я не уверен насколько бенчмарк правдив, но данная разница коллосальна
Смотря какая эффективность нужна. Если минимизация передаваемых данных - возможно. Например, нам нужно передавать очень много событий для условной игры (движение мышью, клики, время события). Если передавать строкой, то 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.
Даже не представляю зачем на клиенте может быть нужно такое. Мне кажется это никогда не будет узким местом. Было бы интересно услышать если у кого-то есть примеры где это хоть сколько-то может повлиять на производительность.