Ну, во-первых, XML - раздутый формат.Каждый байт, который вы отправляете в двоичном виде, будет похож на 2 или 3 байта в XML.Например, отправляя число «44» в двоичном виде, вам нужен всего один байт.В XML вам нужен тег элемента плюс два байта для ввода числа: <N>44</N>
, что намного больше данных.Одним из отличий является время кодирования / декодирования, необходимое для обработки сообщения.Поскольку двоичные данные настолько компактны, они не будут поглощать много тактов.Если двоичные данные представляют собой фиксированную структуру, вы, вероятно, могли бы загрузить их непосредственно в память и получить доступ к каждому элементу из них без необходимости анализировать / разбирать данные.XML - это текстовый формат, который требует обработки еще нескольких шагов.Во-первых, формат раздутый, поэтому он потребляет больше памяти.Кроме того, все данные являются текстовыми, и вам может понадобиться их в двоичном виде, поэтому необходимо проанализировать XML.Этот анализ все еще требует времени для обработки, независимо от того, насколько быстро работает ваш код. ASN.1 - это формат «двоичного XML», который предоставляет хорошую альтернативу XML, но который необходимо будет анализировать так же, как XML.Кроме того, если большая часть данных, которые вы используете, является текстовой, а не числовой, то двоичные форматы не будут иметь большого значения.Другим фактором скорости является общий размер ваших данных.Когда вы просто загружаете и сохраняете двоичный файл размером 1 КБ или файл XML размером 3 КБ, вы, вероятно, не заметите никакой разницы в скорости.Это связано с тем, что диски используют блоки определенного размера для хранения данных.До 4 КБ легко помещается в большинство дисковых блоков.Таким образом, для диска не имеет значения, нужно ли ему прочитать 1 КБ или 3 КБ, поскольку он читает весь блок 4 КБ.Но когда двоичный файл равен 1 мегабайту, а XML - 3 мегабайта, диск должен будет читать намного больше блоков, чтобы просто прочитать XML.(Или написать это.) И тогда даже имеет значение, если ваш XML составляет 3 МБ или только 2,99 МБ или 3,01 МБ.При передаче по TCP / IP большинство двоичных данных будет кодироваться в UU.Благодаря UU-кодированию ваши двоичные данные будут увеличиваться на 1 байт на каждые 3 байта данных.Данные XML не будут закодированы, поэтому разница в размерах станет меньше, а разница в скорости станет меньше.Тем не менее, двоичные данные все еще будут быстрее, поскольку процедуры кодирования / декодирования могут быть очень быстрыми.В основном, размер имеет значение.:-)Но с XML у вас есть дополнительная альтернатива.Вы можете отправлять и хранить XML в формате ZIP.Microsoft Office делает это с более новыми версиями.Документ Word создается в виде файла XML, но сохраняется как часть большего файла ZIP.Это объединяет лучшее из обоих миров, поскольку документы Word в основном являются текстовыми, поэтому двоичный формат не увеличит скорость.Архивирование XML делает хранение и отправку данных намного быстрее, просто делая их двоичными.Еще интереснее то, что сжатый XML-файл может оказаться меньше несжатого двоичного файла, поэтому сжатый XML-файл становится быстрее.(Но это обман, так как XML теперь бинарный ...)