2011-05-06 116 views
2

在性能至關重要的應用程序中,是否會有任何明顯的優勢情景1(完全獨立的構造函數)與情景2(鏈調用構造函數)?調用其他構造函數的構造函數:任何性能問題?

方案1

Class TwoInts 

    Private a, b As Integer 

    Public Sub New(ByVal a As Integer, ByVal b As Integer) 
     Me.a = a 
     Me.b = b 
    End Sub 

    Public Sub New(ByVal a As Integer) 
     Me.a = a 
     Me.b = 0 
    End Sub 

    Public Sub New() 
     Me.a = 0 
     Me.b = 0 
    End Sub 

End Class 

方案2

Class TwoInts 

    Private a, b As Integer 

    Public Sub New(ByVal a As Integer, ByVal b As Integer) 
     Me.a = a 
     Me.b = b 
    End Sub 

    Public Sub New(ByVal a As Integer) 
     Me.New(a, 0) 
    End Sub 

    Public Sub New() 
     Me.New(0) 
    End Sub 

End Class 

回答

4

不,不會有明顯的差異。

你可以運行你自己的基準並找出答案。

0

速度不應有很大的差別。 Thjere只有2個多從裸露的構造函數來深一個電話......但是:

你應該問的語言C#它認爲有關調用構造函數的構造函數: 在那裏,它不會去很好P,所以我認爲你應該堅持一種不同的方法,比如做一個「初始化方法」,然後從每個構造函數中調用它,並有一個更易讀的代碼。在那裏你需要使用不太明瞭的「:this(0)」符號(例如,在閱讀時程序化)。而且,只需要少一點電話即可完成某件事。

0

這取決於你明顯的意思。情景1確實會引入額外的呼叫,但它添加的時間將以毫秒爲單位進行測量。情景2會更快。 (這也會增加生成的代碼的大小。)