当前位置:  开发笔记 > Android > 正文

在iPhone上使用libxml2或NSXMLParser可以获得更好的性能?

如何解决《在iPhone上使用libxml2或NSXMLParser可以获得更好的性能?》经验,为你挑选了4个好方法。

我很好奇你的解决方案是什么,因为它的CPU功率有限,因此在iPhone上进行高性能的XML解析.我已经回顾了Apple提供的XML性能应用程序作为演示,似乎对于他们正在解析的数据馈送(300首iTunes歌曲).. libxml2似乎总是成为最前沿的赢家.

凭借您处理<100Kb数据的经验,您希望获得最佳性能?我目前正在使用TouchXML + libxml2并查看是否可以优化解析速度.

感谢您的反馈意见!



1> Jim Dovey..:

您可以随时查看我对NSXMLParser的替换.它从流中读取XML数据而不是将其全部保存在内存中,并将其一次传递到libxml(NSXMLParser一次性完成所有操作).

源代码可以在github上找到,我在内存方面的写法在我的博客上.



2> zpesk..:

我一般发现更大的数据块(比如你引用的苹果例子)libxml2往往更快.对于较小的数据块,差异可以忽略不计.我喜欢NSXMLParser的一个优点是它是一个基于Objective-C的XML Parser实现,其中libxml2是基于C的.



3> Alex C Schae..:

由于多种原因,libxml2总是比NSXMLParser快,但是,由您决定哪个对您的项目更有用.

总的来说,NSXMLParser更漂亮.代码是有意义的,因为sax解析器应该是,并且它是一个真正的Cocoa类,其中包含所有约定.如果方便和干净的代码是您的首要任务,那么您应该坚持使用NSXMLParser.

虽然NSXMLParser在后端使用libxml2,但由于Objective-C的基础和Objective-C的致命弱点,它速度较慢.在解析XML时,你实际上只是在搜索你感兴趣的标签时反复做一堆紧密的循环.

这里有一个教训 - 当在Objective C的紧密循环中你无法使用快速对象枚举时,你正在看到严重的性能损失.Dispatch/Delegate respondsToSelector /和其他Objective C基本语言结构在这里给你一个真正的缺点.

我不打算发送,但关键是,无论何时你访问这样的东西:"[zomg lolz]"你将方法签名交给objective-c调度员找到目标C函数你的Objective-C方法签名.这种查找过程一次又一次地完成,会大大降低您的性能.

如果您使用的是iPhone,请转到libxml2并且不要回头 - 但如果您的目标计算机有两个处理器且比上帝更多,那么我会使用NSXMLParser来更容易维护代码.



4> lostInTransi..:

我使用Apple提供的XML解析应用程序尝试了我的数据(大约600条记录).发现libxml2要比NSXMLParser快得多.我切换到libxml2(虽然我觉得它实现起来比NSXMLParser更复杂,但它很适合我的目的)

尝试使用大约100条记录的相同示例在两个实现中没有太大区别.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有