vb.net - 在函数中实现泛型类型和委托的性能影响

时间:2010-08-04 04:40:46

标签: .net vb.net

我为具有字符串键的字典编写了一个序列化程序(到字节数组),但是某种对象作为其值。

我以前从未在函数中实现泛型类型或使用过委托,所以我有点担心这比为特定类型的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字典组合时,它会带我很长一段时间写一堆静态字典序列化器(这是我希望首先避免的)

编辑:简化的介绍文字

1 个答案:

答案 0 :(得分:2)

不,泛型专门设计用于使代码更快。与硬编码类型一样快。比使用Object更快,因为你可以避免装箱值类型而不必投射。

委托调用比直接方法调用慢。但它仍然非常非常快。你必须把它称之为十亿次以注意到差异。

您是否了解BinaryFormatter类?它已经做到了。