当我的应用程序在旧硬件(已使用近 7 年的 iPad mini 2)上运行时,我一直遇到我认为的性能问题。不幸的是,它似乎是零星的,其中 2/10 的时间运行正常,其余的,随着时间的推移,CPU 使用率攀升至 90%。
该应用程序正在执行一些密集操作(?)。我使用 bezierpath 绘制实时心率(以及其他)图表。使用 Instruments 并不能真正告诉我哪里可能出现瓶颈。 (说实话,我不太擅长阅读输出)
我尝试花一些时间进行自己的分析
let start = CFAbsoluteTimeGetCurrent()
let end = CFAbsoluteTimeGetCurrent() - start
print("drawRect END:\(Date()) - total Secs:\(end)")
虽然它比我的 iPhone 7 慢,但我认为它仍然可以接受。
drawRect END:2021-01-16 00:39:26 +0000 - total Secs:0.002599000930786133
drawRect END:2021-01-16 00:39:27 +0000 - total Secs:0.001813054084777832
drawRect END:2021-01-16 00:39:28 +0000 - total Secs:0.0019180774688720703
drawRect END:2021-01-16 00:39:29 +0000 - total Secs:0.0016759634017944336
最后,我找到了这个帖子 --> https://developer.apple.com/forums/thread/19936当我开始运行“release”时,高 CPU 使用率基本上消失了。
问题:
在正常的应用开发过程中,我同意以调试方式运行会有好处,但实际的好处是什么?调试配置有何不同? (一些阅读 Material /链接会很好)TQ
如果仪器以“release”配置运行,那么人们如何才能真正弄清楚幕后发生了什么?就像我的情况一样,我不知道 Instruments 正在以“release”身份运行,而正常运行 (Cmd-R) 正在以“Debug”身份运行。这是一个很大的不匹配,显然让我失望了。
那么..我是否有问题?我很可能会这样做,但我一生似乎都无法弄清楚为什么。
iPad Mini2 确实又旧又慢。我从商店下载了一些 CPU/系统监控应用程序,然后运行它,我发现 CPU 使用率已经达到 40% (!!) 有没有办法在应用程序中收集 CPU 使用率数据?就像在打印语句中一样。
谢谢。
最佳答案
调试配置的好处是它可以让您调试应用程序。调试配置可让您查看变量值等内容。如果您尝试使用发布配置调试应用程序,您将看到内存地址而不是变量名称。调试构建配置牺牲了调试能力的速度。 Release 构建配置牺牲了调试速度。
如果您想查看在“调试”配置中运行时遇到的问题,请编辑您的项目方案并告诉 Xcode 使用“调试”配置进行分析。然后 Instruments 可以帮助您找到调试配置中代码中的慢点。
重点关注发布构建配置的时间分析,即使用您应用的人将看到的配置。
查看 Apple 文档中的操作系统和 OSLog 框架引用,您可以通过选择“帮助”>“开发人员文档”在 Xcode 中阅读。操作系统和 OSLog 框架位于系统部分。这些框架是您从代码中收集分析数据的方式。
有关 Time Profiler 工具的更详细说明,请阅读以下文章:
Finding the Slow Spots in Your Code with the Time Profiler Instrument
关于ios - 作为调试运行与作为发布运行(仪器作为发布运行)时的 CPU 使用率较高。如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65746015/