Вопрос

Почему все используют двоичные файлы, если все могут использовать XML?

Это было полезно?

Решение

Конечно, из-за производительности XML хорош, когда вам нужно определить древовидная структура но не все виды данных хорошо с этим сочетаются.Вы бы сохранили 3D-модель в XML-файле?Или изображение?

XML хорош для обработки текстовых данных, а как насчет эффективности? двоичные данные например изображения, звуки, сжатые файлы и т. д.

Он действительно многословен и сложен для анализа, и вы не хотите использовать его, когда важна производительность (например, подумайте о сетевом коде игры).

Я бы застрелился, если бы мне пришлось читать XML-файл, содержащий, например, структуры для векторов или точек.

Вместо этого используйте парсер, который выгружает содержимое в память примерно так:

fread(&myBuf, sizeof(vector_struct), 10, in);

заставил бы меня чувствовать себя глупо..

Другие советы

У тебя есть видимый XML?Похоже, это коварная схема производителей оборудования по продаже жестких дисков большего размера :-)

Однако, если отбросить юмор, я бы предпочел использовать двоичные файлы, если:

  • Меня не слишком беспокоило то, чтобы информация была доступна внешним системам или переносилась на другие платформы.
  • Я хотел читать и записывать его на максимальной скорости (без необходимости анализа/создания XML).
  • Мне не нужно было, чтобы он был удобочитаемым или легко трансформируемым.
  • Я работал над системой, в которой XML не имел смысла (встроенный C) или где библиотеки обработки XML были недоступны.

Во многих случаях XML будет хорошим выбором, но есть сценарии, когда вам нужен двоичный формат или вам следует хотя бы рассмотреть его:

  • Если вам нужен произвольный доступ (и вы не можете загрузить файл в память, например базы данных)
  • Если размер файла вызывает беспокойство (например,изображения, фильмы)
  • Если данные имеют двоичный характер (например,изображения, звук)
  • Если производительность вызывает беспокойство (все вышеперечисленное)

Следующие причины не являются вескими причинами для использования двоичного кода:

  • XML сложно анализировать (существуют отличные XML-библиотеки практически для любого доступного языка).
  • Двоичный код предотвращает вмешательство пользователя (это не так).

Прочитай это: Джоэл о программном обеспечении:Вернуться к основам.Да, текста много.Да, похоже, это не имеет отношения к вашему вопросу, но нет, это неплохой ответ на ваш вопрос - на месте Джоэла я бы просто процитировал здесь весь этот пост и потребовал бы за него миллион репутаций.

Вот очень яркий пример:Бинарные форматы всегда выровнен,каждые биты x..x+y представляют одну группу данных.Перейти в другую группу так же просто, как получить исходную начальную точку и индекс группы и умножить на это два значения ( x*n..(x+y)*n ), чтобы получить все данные, относящиеся к этой группе.Как именно это сделать с помощью XML?

Получите лучшее из обоих миров.Используйте привязку XSD с помощью инструмента, который сериализует/десериализует как двоичный файл, так и XML, например www.codesynthesis.com XSD.

XML — ад для анализа.Как формат, который легко писать людям и читать программам, на самом деле он один из худших.

Преимущество двоичных файлов также состоит в том, что вы можете пропустить большую часть анализа и просто рассматривать некоторые части файла как прямые дампы памяти (хотя, если вы так склонны, вам следует делать это осторожно).

Не все типы данных можно представить в XML.И это экономит много места при хранении значений в двоичном формате, а не в XML.Если данные будут анализироваться анализатором XML, их следует хранить в XML, иначе зачем тратить пространство.

Поскольку анализ XML:

  • Занимает время
  • Требует большого количества вычислений

Таким образом, использование двоичных файлов лучше для производительности.


А также :

  • XML — довольно подробный формат:подумайте обо всех этих тегах, которые делают файл намного больше.
  • представление ваших данных в виде текста не всегда просто/возможно.
  • Меньше --> лучше передавать.
  • В зависимости от метода доступа анализ выполняется быстрее.
  • Менее читаемо.

И еще куча причин.Не стесняйтесь добавлять.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top