簡體   English   中英

vb.net-在函數中實現泛型和委托的性能影響

[英]vb.net - performance implications of implementing a generic type and a delegate in a function

我為具有字符串鍵但值作為某種對象的字典編寫了一個序列化程序(到Byte Array)。

我以前從未在函數中實現泛型類型,也從未使用過委托,因此我有點擔心這比為特定類型的Dictionary(例如Dictionary(Of String,MyClass))編寫序列化函數要慢得多。 )。

由於使用泛型類型或委托,此代碼是否應該大大降低速度?

Public Delegate Function Serializer(Of T)(ByRef Obj As T) As Byte()

Function SerializeDictionary_String_Object(Of T)(ByRef D As Dictionary(Of String, T), ByVal S As Serializer(Of T)) As Byte()

    Dim OBJ As T

    For Each X In D
        OBJ = X.Value
        Exit For
    Next

    Return S(OBJ)

End Function

這是一些使用此代碼的代碼:

SerializeDictionary_String_Object(Of MyClass)(MyDictionary, AddressOf MyClass.Serialize)

它有效,我可以循環使用它並將其與更靜態的Dictionary序列化程序進行比較,但是我更擔心何時將它用於許多不同的String / Object字典組合,這將花費我很長時間寫一堆靜態字典序列化器(這是我首先要避免的東西)

編輯:簡化的介紹文字

不,泛型是專門為使代碼更快而設計的。 就像對類型進行硬編碼一樣快。 使用對象比其他方法更快,因為您可以避免裝箱值類型,而不必強制轉換。

委托調用比直接方法調用慢。 但是它仍然非常非常快。 您必須調用十億次才能注意到差異。

您知道BinaryFormatter類嗎? 它已經做到了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM