Friend過程快于Public過程

字號(hào):

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