2009-09-25 33 views
6

有没有在线的文章,我可以在哪里找到有关提高iPhone应用程序性能的技巧。我已阅读关于内存管理和CPU周期的Apple文档,但它们并不是非常有用。XCode构建性能设置 - iPhone应用程序

也可以有人建议几个XCode设置,可以提高应用程序的性能(发布版本)?

感谢 罐子

+0

你究竟在哪里看到表现受到影响? – pzearfoss 2009-09-25 13:58:36

回答

8

测量和优化短,编译器优化级别仅仅是有关将影响应用程序性能的唯一的事情。通常,您需要优化级别-Os;也就是优化的代码,但是也对尺寸进行了优化。由于iPhone的内存有限,因此缩小代码的大小非常有用。

除此之外,您将不得不测量应用程序的性能并作出相应的反应。乐器中有许多工具可以帮助您完成此任务。一旦你找到它们,这些工具实际上是相当不错的。

考虑到你还没有测量过任何东西(这很好 - 让它工作,把它做对,快点),可能会有一些悬而未决的成果。你是否经常重绘某些东西?有一些自动定时事件发射速度太快?等等......只是不要陷入过早优化的陷阱;需要测量&的反应对于成功优化至关重要。

还要注意,您可以通过模拟器进行粗粒度优化,但您确实需要对设备上运行的应用程序进行分析以进行最终波兰语优化。


(1)听起来像你的数据库查询真的很慢。不知道模式等,很难知道是否真的如此。 (2)当进行性能分析并且时间被未知库中的函数使用时,请查看堆栈并查看调用该库的内容,以确定您的应用程序触发性能下降的原因。

+0

感谢您的意见! 我的应用程序基本上是一个UIKit应用程序,它询问玩家几个问题,然后找出它们的兼容性。所以它有几个UI控件,如UIButtons,UIPickerControl,UITextView等。 当用户选择一个按钮时,应用程序需要2-3秒才能响应事件,但它只是从db中提取一个新问题,花费很多时间。我尝试了各种工具,如Shark和Instruments,并发现CPU周期浪费在哪里,它们都处于未知库中。 谢谢 – Jugs 2009-09-26 06:12:42

2

基本上,什么bbum说。获取实际数据并从那里开始。也就是说,有几个编译标志可以产生很大的影响:

  • 确保您没有在-O0编译。正如bbum所说,-Os可能就是你想要的。
  • 如果您正在进行大量浮点运算,请确保在为ARMv6构建时未设置“编译为Thumb”(-mthumb)。 ARMv6上的拇指指令集没有浮点指令,因此您为每个使用的浮点操作都选择了一个垫片。通常这会被代码大小的节省所抵消,但是如果您有很多浮点,它可能会带来性能问题。请注意,您可以构建您的项目的一部分,并将其关闭。另请注意,ARMv7上的thumb2指令集支持浮点运算。
+0

什么是-O0? Google什么也没有显示 – quantumpotato 2014-10-15 17:23:35

2

提高iPhone性能的最佳方法是提高应用性能,而不仅仅是通过编译器优化,而是通过更好的算法。

通常,编译器优化可能会将性能提高一位或两位数百分比。使用更好的算法,缓存,重新设计等的代码优化可以有三位数的百分比改进。

我从来没有发现编译器设置,显着提高我的应用程序的性能。你的里程可能有所不同