技术开发 频道

如何选择你的iPhone XML解析器

  好吧,现在让我们开始比较所有这些库!

  应用XML解析器的性能比较

XML Parser Stats Display in Test App

  苹果公司已经作出了出色的代码示例调用XMLPerformance,让您所花费的时间比较分析一个?900KB的XML文件,其中前300的iTunes同时与NSXML libxml2的宣传短片和歌曲。

  该示例允许您选择一个分析方法,然后分析该文件,并就如何保持长时间才下载的文件,并解析数据库中的文件的统计。 然后,您可以到屏幕上看到一个统计,平均每个方法下载和解析时间。

  我认为这将是一个理想的方法来测试各种API如何相互执行,使我扩大了样本,以包括上述图书馆。 你可以下载下面如果您想尝试它在您的设备更新项目。 它也可作为如何使用上述API的每个好例子!

  下载更新XMLPerformance项目

  关于该项目的说明:如果库中包含XPath的支持,我用一个单一的查找它,因为我觉得它代表了该图书馆将在实践中使用的方式。 但当然XPath是一般较手动通过树走的更慢,所以增加了对这些图书馆的基准。

  因此,无论如何 - 我将讨论如何执行情况与样本上写我的设备这里,是结果 - 但随时给它一个在您的设备,或者调整对实际的XML数据,你需要的代码镜头解析!

  XML解析器的性能比较

  下面是一些图,显示了如何快速解析各种解析器对我的设备(1部3G版iPhone的XML文档):

Parsing Time By Parser

  正如你可以在这里看到,NSXMLParser是迄今为止最慢的方法。 TBXML是最快的,这是有道理的,因为很多功能被剔除,以优化只读解析时间。

  我很惊讶,但是,看到TBXML和其他一些DOM的解析方法进行速度比的libxml2的SAX解析器,我原以为将是最快的方法所有。 我没有异型,但以我的猜测为什么它是慢,因为经常需要比较字符串中的SAX解析方法的文件。

  但是,不要在这个折扣的图表看的libxml2的SAX方法。 请记住,libxml2的是这些方法,可以分析该文件,因为它的阅读中,只有1 - 因此它可以让你的程序立刻开始显示数据而不是让下载排名榜首。

  好吧,这里有一个图表,显示由解析器高峰内存使用(这是通过运行通过对象分配工具的各种方法获得):

Memory Usage By Parser

  请注意,DOM方法通常需要更多的内存比SAX的方法与TBXML,这确实是相当有效的异常(开销)。 这是值得考虑当您正在处理的,特别是大文件,得出了一个iPhone的内存限制。

  此外请注意的libxml2的SAX的方法是最好的选择,因为据峰值内存使用量而言(我怀疑它的规模比其他人的声音)。

  最后,让我们的总结与概括的图表分析器之间的一切,我们已经讨论了上述的差异:

  NSXMLlibxml2的 - 的SAXTBXMLTouchXMLKissXMLTinyXML的GDataXMLlibxml2的 - 的DOM

  包含在SDK的?是的是的没有没有没有没有没有是的

  秒的时间解析1.871.190.681.11.371.271.070.84

  峰值内存使用3.113.013.076.55.254.84.154.97

  解析而下载?没有是的没有没有没有没有没有没有

  编辑/保存XML?没有没有没有没有是的是的是的是的

  XPath的支持?没有没有没有是的是的是*是的是的

  C或的OBJ - C的的OBJ - C的ç的OBJ - C的的OBJ - C的的OBJ - C的ç的OBJ - C的ç

  牌照苹果麻省理工学院麻省理工学院麻省理工学院麻省理工学院了ZLib阿帕奇麻省理工学院

  *与TinyXPath =

0
相关文章