将树结构数据转换为XML--性能问题

时间:2009-04-14 16:01:13

标签: c# xml tree

我在树结构中有一组数据。目前我将这些数据保存到二进制文件中。缺点是这些数据的排序,过滤非常困难。不仅如此,当数据量很大时,将它们从硬盘读入内存的速度非常慢。

所以我正在考虑将这些树状数据保存到XML文件中。我想要这个的原因是因为

  1. XML已内置于库中以进行过滤和数据操作
  2. 社区很好地支持XML操作,而现在我必须支持我自己的数据结构操作
  3. 鉴于.Net对XML的支持,我想知道从XML查询数据(而不是从二进制文件中查询数据)是否更快(在加载速度方面)?切换时,我有什么优势吗?我很确定,就编程工作而言,XML击败了我自己的树数据结构,但加载速度如何呢?

3 个答案:

答案 0 :(得分:1)

根据经验:您不会发现XML是管理数据的最小或最快的方式。

您的描述没有给出足够详细的说明,但也许关系数据库可能是更好的方法。将树结构映射到关系模型通常并不困难。 (反过来说是另一回事......)

答案 1 :(得分:0)

数据大小可能会大于您当前的树大小,因为XML是文本,因此所有数据都必须序列化为文本表示。因此加载可能会或可能不会更慢,这也取决于您当前的负载实现。

至于其他方面,如果做得好,查询和修改数据非常简单且相当有效,但由于文本性质,它通常不能超过完善的二进制实现。

如果您需要转换树数据(用于显示等),那么XML非常棒 - 使用XSL Transformations允许您通过很少的编程创建几乎任何XML,HTML或文本表示形式(因此还有测试和调试工作。

答案 2 :(得分:0)

从性能角度来看,XML几乎肯定会失去对二进制结构的竞争。但是,从开发和技术的角度来看,您对XML的胜利是正确的。

我完全赞同@Dan的陈述。随着数据大小的增加,XML数据结构的性能呈指数下降。它的使用是如此常见,因为大多数应用程序不处理通常存储在数据库中或序列化为二进制数据的大量数据。