2014-06-16 136 views
0
  1. Swift编译器是否足够聪明,能够优化掉多个重复的方法调用以返回相同的对象?或者,我应该首先将返回值赋给一个常量,然后使用它?Swift Performance

  2. 例如:

    Table View Programming Guide for iOS说,添加的子视图的UITableViewCellcontentView时,避免使它们是透明的。 “透明子视图会增加合成成本,从而影响滚动性能。”

    所以,我经常做到以下几点:

    class EmployeeCell: UITableViewCell { 
        var nameLabel: UILabel 
        var titleLabel: UILabel 
        // ... 
    
        init(style: UITableViewCellStyle, reuseIdentifier: String) { 
         nameLabel = UILabel(frame: CGRectZero) 
         nameLabel.backgroundColor = UIColor.whiteColor() 
    
         titleLabel = UILabel(frame: CGRectZero) 
         titleLabel.backgroundColor = UIColor.whiteColor() 
    
         // ... 
    
         super.init(style: style, reuseIdentifier: reuseIdentifier) 
        } 
    } 
    

    它会更好,然而,第一个(内init)做let whiteColor = UIColor.whiteColor(),然后用whiteColor替换每次调用UIColor.whiteColor()

  3. 或者,也许在这个例子中,我定义一个函数(内init)创建一个UILabelCGRectZero一个frameUIColor.whiteColor()一个backgroundColor,只是调用初始化每个标签属性。如果我那样做,will Swift know to optimize (perhaps inline) that function

+2

我不认为它会产生有意义的性能影响无论哪种方式,所产生的工作。不管它在这个特定情况下的行为如何,我认为依靠编译器的实现细节并不是一个好主意 – Jiaaro

+0

@Jiaaro可能不是这样一个小例子,但是如果这个类做了非常重要的信息,它可能会更有趣(例如,如果我在100次以上的战利品中调用此方法,并且表视图可能有1000行)。请记住,swift正处于测试阶段。所以,行为可能会改变。 – Matt3o12

回答

0

使用swiftc -help有很多的选项,使用-emit-XXXX看到细节