XCode 构建设置以提高性能 - iPhone 应用程序
Posted
技术标签:
【中文标题】XCode 构建设置以提高性能 - iPhone 应用程序【英文标题】:XCode build settings for performance - iPhone apps 【发布时间】:2010-12-01 10:03:27 【问题描述】:是否有任何可用的在线文章,我在哪里可以找到一些提高 iPhone 应用程序性能的技巧。我已经阅读了有关内存管理和 CPU 周期的 Apple 文档,但它们并不是很有帮助。
还有人可以推荐一些可以提高应用程序性能(发行版)的 XCode 设置吗?
谢谢 水壶
【问题讨论】:
您在哪里看到性能下降? 【参考方案1】:除了测量和优化之外,编译器优化级别几乎是唯一会影响应用程序性能的因素。通常,您需要-Os
的优化级别;也就是说,优化了代码,但也针对大小进行了优化。由于 iPhone 的内存有限,因此减少代码大小很有用。
除此之外,您还必须衡量应用程序的性能并做出相应的反应。 Instruments 中有许多工具可以帮助您完成这项任务。一旦你弄清楚了这些工具,它们实际上非常好。
鉴于您还没有实际测量任何东西(这很好 - 让它发挥作用,让它正确,让它快速),可能会有一些唾手可得的成果。你是否经常重绘某些东西?是否有一些自动定时事件触发太快?等等...只是不要落入过早优化的陷阱;衡量和反应的需要对于成功的优化至关重要。
另请注意,您可以通过模拟器进行粗粒度优化,但您确实需要对设备上运行的应用程序进行分析才能进行最终优化。
(1) 听起来您的数据库查询真的很慢。不知道架构等,很难知道是否真的如此。
(2) 在进行性能分析并且时间被未知库中的函数所消耗时,请查看堆栈并查看调用该库的内容,以找出您的应用触发性能下降的原因。
【讨论】:
感谢您的 cmets!我的应用程序基本上是一个 UIKit 应用程序,它会询问玩家几个问题,然后找出它们的兼容性。所以它有几个 UI 控件,如 UIButtons、UIPickerControl、UITextView 等。当用户选择一个按钮时,应用程序需要 2-3 秒才能做出响应,即使它只是从数据库中获取一个不需要太多时间的新问题时间。我尝试了各种工具,如 Shark 和 Instruments,发现 CPU 周期被浪费在哪里,它们都在一个未知库中。谢谢【参考方案2】:基本上,bbum 所说的。获取实际数据并从那里开始。也就是说,有几个编译标志可以产生重大影响:
确保您没有在 -O0 编译。正如 bbum 所说,-Os 可能是您想要的。 如果您正在执行大量浮点计算,请确保在为 ARMv6 构建时未设置“Compile for Thumb”(-mthumb)。 ARMv6 上的 thumb 指令集没有浮点指令,因此您为使用的每个浮点操作都打了一个 shim。通常这会被代码大小的节省所抵消,但如果你有很多浮点数,它可能会带来性能风险。请注意,您可以为 thumb 构建项目的一部分并关闭它。另请注意,ARMv7 上的 thumb2 指令集支持浮点。【讨论】:
【参考方案3】:提高 iPhone 性能的最佳方法是提高应用性能,不仅通过编译器优化,还通过更好的算法。
一般而言,编译器优化可以将您的性能提高一些个位数或两位数的百分比。使用更好的算法、缓存、重新架构等进行代码优化可以提高三位数的百分比。
我从未找到显着提高应用性能的编译器设置。您的里程可能会有所不同。
【讨论】:
以上是关于XCode 构建设置以提高性能 - iPhone 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
现在 iPhone 上的重置设置不会在 Xcode 中显示以运行应用程序
有没有一种方法可以在不使用 Xcode 11 在 iPhone 上构建 UI 的情况下测量 Swift 的性能? [关闭]
如何通过 xCode 构建设置在 iPhone 上预设地理位置?