WEB开发网
开发学院软件开发Python 使用 ElementTree,以 Python 语言处理 XML 阅读

使用 ElementTree,以 Python 语言处理 XML

 2007-03-29 12:11:28 来源:WEB开发网   
核心提示: 一些基准测试我的同事 Uche Ogbuji 曾为另一个出版物写过一篇关于 ElementTree的短文,(请参阅 参考资料,使用 ElementTree,以 Python 语言处理 XML(2),)他对 ElementTree和 DOM 做了几个测试,其中之一比较了它们的相对速度和内存消

一些基准测试

我的同事 Uche Ogbuji 曾为另一个出版物写过一篇关于 ElementTree的短文。(请参阅 参考资料。)他对 ElementTree和 DOM 做了几个测试,其中之一比较了它们的相对速度和内存消耗。Uche 选用了他自己的 cDomlette 作为比较对象。很遗憾,我不能在我使用的 Mac OSX 机器上安装 4Suite 1.0a1(我正在研究一种变通方法)。然而,我可以根据 Uche 的评估来估计大致性能 - 他指出 ElementTree同 cDomlette相比,速度慢 30%,但消耗的内存也要少 30%。

我极为好奇的是, ElementTree和 gnosis.xml.objectify在速度和内存上比较,结果会如何。实际上,之前我从未对我的模块进行过非常精确的基准测试,因为我始终没有一个具体的 可比对象。我选择了两个过去我曾用于基准测试的文档:莎士比亚的 哈姆雷特289 KB XML 版本,及 3 MB XML Web 日志。我创建了几个脚本,仅用于将 XML 文档解析为几种工具的对象模型,但此外不作任何其它操作:

清单 1. 对用于 Python 的 XML 对象模型计时的脚本

% cat time_xo.py
    import sys
    from gnosis.xml.objectify
    import XML_Objectify,EXPAT
doc = XML_Objectify(sys.stdin,EXPAT).make_instance()
---
% cat time_et.py
    import sys
    from elementtree
    import ElementTree
doc = ElementTree.parse(sys.stdin).getroot()
---
% cat time_minidom.py
    import sys
    from xml.dom
    import minidom
doc = minidom.parse(sys.stdin)

在所有三个案例中,程序对象的创建非常类似,对于 cDomlette 也一样。我在另一个窗口观察 top 的输出,以评估内存使用情况;每种测试进行三遍以确保其一致性,并取其结果的平均值(每次运行使用的内存是相同的)。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 ElementTree Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接