FFF 相对于 XML 的最大优势是基于索引的随机访问的内置功能。反面很明显,与 FFF 相比,XML 的最大缺点是必须对其进行解析的线性方式。
假设您有一个保存人员记录的数据文件。记录可以包含 ID、姓名、地址和电话号码。
固定格式
ID : 8 chars
Surname : 36 chars
Firstname : 36 chars
Address : 100 chars
Phone : 20 chars
-----------------------
Total Space: 200 chars
XML 格式(人为的,可能是多种格式)
<Person id="...">
<Surname>...</>
<Firstname>...</>
<Address>...</>
<Phone>...</>
</Person>
Total Space : Variant
现在,假设这有 1000 条“记录”,让我们看看用两种形式达到第 600 条记录有多困难。
固定格式
Offset = (600-1)*200 = 119800 bytes
fseek() + fread() = done
XML 格式
Um.....
XML 的最大优势是可扩展性(X并非无中生有)。XML 制作了一个很棒的数据片段、RSS 提要、配置文件等。它很容易发出,不需要特殊的库,只有基本的知识,并且在存储空间上是合理的(只要你不<LoveThoseSuperDuperLongElementNames>
发疯)。它很容易理解,有大量标准支持,几乎每个人的工具包中都有 XML 解析器。通用的“理解”只是一个模式文档(老派的 DTD),验证等也是如此。
但 XML 最大的缺点一直是现在,而且在量子计算飞跃长路之前,一直都是:速度。XML 是一种糟糕的吞吐量要求存储系统。