Зачем использовать бинарные файлы? - PullRequest
2 голосов
/ 13 марта 2010

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

Ответы [ 9 ]

7 голосов
/ 13 марта 2010

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

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

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

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

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

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

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

1 голос
/ 13 марта 2010

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

1 голос
/ 13 марта 2010

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

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

1 голос
/ 13 марта 2010

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

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

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

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

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

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

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

Потому что разбирает XML:

  • Занимает время
  • Требуется много расчетов

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


А также:

  • XML - довольно многословный формат: подумайте над всеми этими тегами, которые делают файл намного больше.
  • представление ваших данных в виде текста не всегда легко / возможно
0 голосов
/ 13 марта 2010

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

0 голосов
/ 13 марта 2010
  • Меньше -> лучше передать.
  • В зависимости от метода доступа, для более быстрого анализа.
  • Менее читаемый.

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

0 голосов
/ 13 марта 2010

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

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

...