2014-06-16 45 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看到細節