首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iPhone上使用libxml2或NSXMLParser会有更好的性能吗?

在iPhone上使用libxml2或NSXMLParser会有更好的性能吗?
EN

Stack Overflow用户
提问于 2009-05-05 18:28:30
回答 8查看 19.1K关注 0票数 19

考虑到iPhone的处理能力有限,我很好奇您的解决方案是什么,用于在CPU上进行高性能解析。我已经回顾了苹果提供的XML Performance App作为演示,似乎对于他们正在解析的数据馈送(300首iTunes歌曲)。libxml2似乎总是以最大赢家的身份出现。

根据您在处理小于100Kb的数据方面的经验,您更喜欢哪种方式来获得最佳性能?我目前正在使用TouchXML + libxml2,希望了解是否可以按原样优化解析速度。

感谢您的反馈!

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-05-05 20:03:19

我通常发现,对于较大的数据块(如您引用的苹果示例),libxml2往往更快。对于较小的数据块,差异可以忽略不计。我喜欢NSXMLParser的一个优点是它是一个基于Objective-C的XML解析器实现,其中libxml2是基于C的。

票数 16
EN

Stack Overflow用户

发布于 2009-05-09 02:32:59

你可以随时看看我替代NSXMLParser的版本。它从一个流中读取XML数据,而不是将其全部保存在内存中,并将其一次1KB传递给libxml (在libxml中,NSXMLParser一次性完成所有操作)。

源代码可以在on github上找到,我在内存方面的文章是on my blog

票数 17
EN

Stack Overflow用户

发布于 2009-05-16 04:46:29

出于许多原因,libxml2总是比NSXMLParser更快,然而,这取决于你的项目中哪一个更有用。

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

虽然NSXMLParser在后端使用libxml2,但由于Objective-C的基础和Objective-C的致命弱点,它的速度较慢。在解析XML时,您实际上只是在一遍又一遍地进行紧凑的循环,同时搜索您感兴趣的标记。

这就是教训-当你在Objective C中的一个紧凑循环中,你不能利用Fast Object枚举,你就会看到一个严重的性能损失。调度/委托respondsToSelector /和其他基于Objective C的语言构造在这里给你带来了一个真正的劣势。

我不打算讨论分派,但关键是,每当您访问类似于"zomg lolz“的内容时,您都会将一个方法签名传递给objective-c分派器,以便为您的Objective-C方法签名找到目标C函数。这个查找过程,当一遍又一遍地完成时,会极大地降低您的性能。

如果你使用的是iPhone,使用libxml2,不要回头看--但是如果你的目标机器有两个处理器,并且比上帝拥有更多的内存,我会使用NSXMLParser来更容易地维护代码。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/826281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档