当前位置:  开发笔记 > IOS > 正文

Apple LLVM编译器是否优化了重复的属性访问?

如何解决《AppleLLVM编译器是否优化了重复的属性访问?》经验,为你挑选了1个好方法。

考虑这个Objective-C代码(启用ARC):

[self.aProperty sendMessage];
if (self.aProperty)
{
    [self doSomethingWithProperty:self.aProperty];
}

我想知道是否重写代码到下面的剪辑会更快(在发布版本中):

MyPropertyClass* myProperty = self.aProperty;
[myProperty sendMessage];
if (myProperty)
{
    [self doSomethingWithProperty:myProperty];
}

问题是Apple LLVM编译器3.0是否能够优化对财产获取者的重复访问?如果房产是非原子的,这会有什么不同吗?

如果我不得不猜测,我会说编写下面的代码更快,因为编译器无法保证self.aProperty在这些行中不会改变.我对吗?



1> Chuck..:

比原子与非原子问题更重要的是,不能保证吸气剂是纯粹的或幂等的.多次调用getter可能不等同于调用一次.例如,someNSEnumerator.nextObject每次调用它时都会返回不同的结果.因此,在一般情况下不可能进行这样的优化.

但是,关于"更快",我怀疑任何代码片段都会明显更快.正确的答案是分析,看看如果这个代码经常运行足以值得麻烦,它是否有任何区别.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有