为何使用二进制文件?

时间:2010-03-13 13:04:39

标签: xml binaryfiles

为什么所有人都使用二进制文件,如果所有人都可以使用XML?

9 个答案:

答案 0 :(得分:7)

当然,由于性能,当您必须定义树结构时,XML是很好的,但并非所有类型的数据都适合它。你会在XML文件中存储一个3d模型吗?还是一张图片?

XML可以很好地处理文本数据,有效的二进制数据如图像,声音,压缩文件等等​​。

解析时真的很冗长,而且在性能很重要时你不想使用它(比如想想游戏的网络代码)。

如果我必须阅读包含例如矢量或点的结构的XML文件,我会自己开枪。

使用解析器将内容转储到内存中,例如:

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

会让我感到愚蠢..

答案 1 :(得分:1)

您是否看过 XML?这似乎是硬件制造商出售更大硬盘的一个阴险计划: - )

但是,除了幽默之外,我会选择使用二进制文件:

  • 我并不太关心将信息提供给外部系统,或者可移植到其他平台。
  • 我想以最快的速度读取和写入它(无需解析/生成XML)。
  • 我不需要人类可读或易于转换。
  • 我正在开发一个XML没有意义的系统(嵌入式C)或者XML处理库不易获得的地方。

答案 2 :(得分:1)

在许多情况下,XML将是一个不错的选择,但有些情况下您需要二进制格式或者至少应该考虑它:

  • 如果您需要随机访问(并且无法将文件加载到内存中 - 例如数据库)
  • 如果文件大小是一个问题(例如图像,电影)
  • 如果数据本质上是二进制的(例如图像,声音)
  • 如果表现是一个问题(以上所有)

以下是使用二进制文件的不充分理由:

  • XML难以解析(几乎所有可用语言都有出色的XML库)
  • 二进制文件可防止用户篡改(但不会)

答案 3 :(得分:1)

阅读本文:Joel on software: Back to basics。是的,这是很多文字。是的,它似乎与你的问题没有关系,但不是,这对你的问题来说不是一个坏的答案 - 如果我是乔尔,我只是在这里引用整篇文章并声称拥有数以亿计的代表。

这是一个非常光辉的例子:二进制格式总是对齐,每个x..x + y位代表一组数据。移动到其他组就像获取原始起始点和组的索引一样容易,并将这两个值乘以(x * n ..(x + y)* n)以获得与该组相关的所有数据。您如何使用XML完成此操作?

答案 4 :(得分:1)

充分利用这两个世界。将XSD绑定与使用序列化/反序列化为二进制和XML的工具结合使用 - 例如www.codesynthesis.com XSD。

答案 5 :(得分:0)

XML是一个解析的地狱。作为一种易于人们编写和程序阅读的格式,它实际上是最糟糕的格式之一。

二进制文件还有一个优点,就是你可以跳过大部分解析,只是将文件的某些部分视为直接内存转储(如果你这么倾向 - 你应该小心谨慎)。

答案 6 :(得分:0)

  • 较小 - >更好地传输。
  • 根据访问方法,解析速度更快。
  • 不太可读。

另一堆原因。随意添加。

答案 7 :(得分:0)

并非所有类型的数据都可以用xml表示。并且它节省了大量空间来存储二进制而不是XML的值。如果数据将由XML解析器解析,那么它应该以XML格式存储,否则为什么要浪费空间。

答案 8 :(得分:0)

因为解析XML:

  • 需要时间
  • 需要大量计算

因此,使用二进制文件更适合表演。


而且,还有:

  • XML是一种非常详细的格式:想想所有这些标签 - 这会使文件变得更大。
  • 将数据表示为文本并不总是容易/可能