читать в буфер всё, что прилетело из сети и потом парсить? Будут грабли с переключением контекста в системном вызове или всё уже закешировано?
Задача - читать бинарный протокол, данные летят в одной tcp сессии, заголовок 16 байт + variable часть, длина которой лежит в заголовке. Читать много, по 50-100k пакетов в секунду (делаю генератор нагрузки), т.е. по 100-200k io.ReadFull'ов в секунду.
Альтернатива - делать read и самому разбираться "что именно получил" разделяя на нужные куски (если получил неполный пакет, то возвращаемся в цикле и продолжаем делать read).
гадать не стоит, лучше проверять, т.е. бенчмаркить 🙂
А что, сокет не обернут в bufio.Reader?
Обсуждают сегодня