Alexey Shrub -> debian-russian@lists.debian.org @ Fri, 13 Nov 2015 22:43:53 +0300:
>> пожалуйста подробнее про оверхед в текстовых протоколах, а то я видимо >> что-то пропустил AS> Бинарный протокол должен быть экономнее по памяти, например число будет одним AS> байтом представлено вместо числа байт равному числу цифр, имена полей будут AS> кодами вместо человекопонятных наименований. AS> А если протокол ещё и с фиксированным размером полей (чего в текстовых AS> протоколах обычно не делают), то и парсинг его будет быстрее не нужно ходить AS> по байтам и смотреть не конец ли это строки - сразу режем кусок нужного AS> размера. Тут-то и приезжает оверхед. Есть у нас такое на работе. Поле - union из int (32 bit) и double, итого 8 байтов, а передается там в большинстве случаев число из первой сотни (если в человеко-читаемом виде, то три байта), и в доброй половине - вообще один бит. А строку при этом передать нельзя, потому что размер фиксирован. AS> В принципе бинарный протокол даже с полями переменной длинны должен AS> быстрее парсится, ибо обычно там есть размер поля (про TLV уже AS> упоминали тут), а значит не надо ползти по байтам и искать конец AS> значения. "Преждевременная оптимизация - корень всех зол".