代码之家  ›  专栏  ›  技术社区  ›  Brian Webster

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

  •  0
  • Brian Webster  · 技术社区  · 14 年前

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

    我以前从未在函数中实现过泛型类型或使用过委托,因此我有点担心这比为特定类型的字典(例如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)
    

    它可以工作,我可以循环它并将它与更静态的字典序列化程序进行比较,但是我更关心的是,当我开始将它用于许多不同的字符串/对象字典组合时,我会花很长时间来编写一堆静态字典序列化程序(这是我希望首先避免的)

    编辑:简化简介文本

    1 回复  |  直到 14 年前
        1
  •  2
  •   Hans Passant    14 年前

    不,泛型是专门设计用来生成代码的 . 就像硬编码类型一样快。比另一种方法更快,使用Object,因为可以避免装箱值类型,并且不必强制转换。

    你知道BinaryFormatter类吗?它已经做到了。