Friend過程快于Public過程

字號:

Public Sub PublicSub(ByVal value As Long) '
    End Sub
    Public Function PublicFunction(ByVal value As Long) As Long '
    End Function
    Friend Sub FriendSub(ByVal value As Long) '
    End Sub
    Friend Function FriendFunction(ByVal value As Long) As Long '
    End Function
    然后,在表單模塊中創(chuàng)建一個循環(huán),執(zhí)行每個例程許多次。比如,要在一個Pentium II機(jī)器上查看執(zhí)行時間上的區(qū)別,可以調(diào)用每個例程1,000,000次。下面是測試的結(jié)果:
    Private類模塊中,反復(fù)調(diào)用1,000,000次Public Sub或者Function耗費了0.46秒,而調(diào)用內(nèi)容相同的Friend類型模塊則分別只有0.05秒和0.06秒。前后竟然相差了8-9倍之多!對于MultiUse類型的Public類模塊,也是一樣的結(jié)果。
    對于這個不可思議的結(jié)果的可能解釋是:Friend型過程沒有處理匯集和拆裝代碼的消耗(Public過程可以從當(dāng)前工程外被調(diào)用,因此COM必須要來回地匯集數(shù)據(jù))。
    但是在多數(shù)情況下,這些時間差別是不明顯的,特別是程序中包含一些復(fù)雜和耗時的語句時。
    即使這樣,F(xiàn)riend型過程仍有其他的優(yōu)勢高于Public類型,比如:接受和返回在BAS模塊中定義的UDT變量的能力。