关于在iOS设备上运行的Objective-C:
为了优化电池消耗(从而最大限度地减少时钟周期的使用),我关注iOS设备创建和存储结构所需的工作量与创建和存储所需的工作量之间的关系一个对象。
是否对对象进行了神奇优化,以使差异可以忽略不计,或者是否存在与创建对象相关的开销?
答案 0 :(得分:2)
我怀疑这个领域的任何优化都是神奇的变化,但考虑到电池寿命对用户体验质量的重要性,苹果公司已经很好地猜测了它。遵循常识性指南,您将对电池寿命产生更大的影响:
懒惰:不要做很多用户可能永远不需要的工作。
不要不必要地使用网络和GPS:无线电消耗大量电量。
做一个好公民:使用框架而不是反对它,比如让你的应用暂停。
个人资料:使用工具来分析应用的电池消耗情况。
答案 1 :(得分:1)
与C结构相比,分配和初始化Objective C对象的工作量必然更多。由于iOS和在iOS上运行的应用程序创建的对象太多,Apple已经很好地优化了该过程。在大多数情况下,差异与应用程序中完成的其余处理工作相比相形见绌。
如果您正在处理可以用简单结构而不是对象表示的大量对象,则分配结构可能比分配和初始化对象明显更有效。
如果您尝试重新创建Objective C运行时的功能以避免使用对象而不是结构,那么您的代码很可能不如Apple优化的Objective C运行时有效。您最有可能为更低效的数据处理交换更有效的存储分配。
我的建议是不要担心对象创建开销。为了达到您所表达的目标,延长电池寿命,您最好不要接受Caleb的建议。分析应用程序以查看其最难处理的位置,并集中精力改进这些区域将比通过避免对象尝试对抗框架更有益。