我为具有字符串键的字典编写了一个序列化程序(到字节数组),但是某种对象作为其值。
我以前从未在函数中实现泛型类型或使用过委托,所以我有点担心这比为特定类型的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字典组合时,它会带我很长一段时间写一堆静态字典序列化器(这是我希望首先避免的)
编辑:简化的介绍文字
答案 0 :(得分:2)
不,泛型专门设计用于使代码更快。与硬编码类型一样快。比使用Object更快,因为你可以避免装箱值类型而不必投射。
委托调用比直接方法调用慢。但它仍然非常非常快。你必须把它称之为十亿次以注意到差异。
您是否了解BinaryFormatter类?它已经做到了。