1

关于在 iOS 设备上运行的 Objective-C:

为了优化电池消耗(从而最大限度地减少时钟周期的使用),我关心 iOS 设备创建和存储结构所需的工作量与创建和存储对象所需的工作量。

对象是否被神奇地优化以使差异可以忽略不计,或者是否存在与创建对象相关的开销?

4

2 回答 2

2

我怀疑这方面的任何优化都是神奇的,但考虑到电池寿命对用户体验质量的重要性,Apple 已经处理了它是一个很好的猜测。遵循常识准则,您将对电池寿命产生更大的影响:

  • 懒惰:不要做很多用户可能永远不需要的工作。

  • 不要不必要地使用网络和 GPS:无线电会消耗大量电力。

  • 做一个好公民:当涉及到让你的应用程序被暂停之类的事情时,使用框架而不是反对它。

  • 配置文件:使用 Instruments 来配置应用程序的电池消耗。

于 2012-05-23T17:19:18.293 回答
1

与 C 结构相比,分配和初始化 Objective C 对象的工作必然更多。由于 iOS 创建了如此多的对象以及在 iOS 上运行的应用程序,Apple 已经很好地优化了这个过程。在大多数情况下,与应用程序中完成的其余处理工作相比,差异相形见绌。

如果您正在处理可以用简单结构而不是对象表示的大量对象,则分配结构可能比分配和初始化对象更有效。

如果您尝试重新创建 Objective C 运行时的功能以避免使用对象而不是结构,那么您的代码很可能比 Apple 优化的 Objective C 运行时效率低。您很可能会用更有效的存储分配换取效率较低的数据处理。

我的建议是不要担心对象创建开销。为了实现您所表达的目标,延长电池寿命,您最好听取 Caleb 的建议。分析应用程序以查看它在哪里工作最困难,并集中精力改进这些领域,这比试图通过避免对象来对抗框架更有好处。

于 2012-05-23T19:52:23.707 回答