为什么.net通用词典这么大
我正在VB.net中序列化一个通用词典,我很惊讶它只有一个条目,大约1.3kb。是我做错了什么,还是我应该做别的事情?我有大量的字典,把它们都通过网络发送出去真让我受不了。我用于序列化的代码是为什么.net通用词典这么大,.net,vb.net,generics,serialization,.net,Vb.net,Generics,Serialization,我正在VB.net中序列化一个通用词典,我很惊讶它只有一个条目,大约1.3kb。是我做错了什么,还是我应该做别的事情?我有大量的字典,把它们都通过网络发送出去真让我受不了。我用于序列化的代码是 Dim dictionary As New Dictionary(Of Integer, Integer) Dim stream As New MemoryStream Dim bformatter As New BinaryFormatter() dictionary.
Dim dictionary As New Dictionary(Of Integer, Integer)
Dim stream As New MemoryStream
Dim bformatter As New BinaryFormatter()
dictionary.Add(1, 1)
bformatter.Serialize(stream, dictionary)
Dim len As Long = stream.Length
设置用于序列化的字典需要很多开销(显然,大约1.3kb;)。但是,如果您对键和值使用基本类型,那么随着向集合中添加更多元素,大小不会显著增加
此开销主要是一次性的前期成本-因此,一旦序列化了Dictionary类,包含的成员就不会增加太多大小。字典的默认序列化必须包括字典类型、使用的比较器以及每个项的类型(键和值)的类型信息因为它们通常可能是子类型。必须为每个字典添加此开销。如果将数据打印为字符串,可以看到有许多完全限定的类型占用了大量字节: \0\0\0\0???\0\0\0\0\0\0\0\0?系统.集合.通用.字典
2[[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]\0\0\0\b反对\b比较\bHashSize\rKeyValuePairs\0\0\b?系统.集合.通用.通用质量比较者
1[[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]\b?系统.集合.通用.KeyValuePairs2[[System.Int32,mscorlib,Version=2.0.0.0.0.0,Culture=neutral,PublicKeyToken=B77A561934E089],[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089][\0\0\0\0\t\0\0\0\t\0\0\0\0\0\0?System.Collections.Generic.GenericEqualityComparer
1[[System.Int32,mscorlib,Version=2.0.0.0.0.0.0,Culture=neutral,PublicKeyToken=b77a561934e089]]\0\0\0\0\a\0\0\0\0\0\0\0\0\0?系统.集合.通用.键值对2[[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,Version=2.0.0.0.0.0,Culture=neutral,PublicKeyToken=B77A561934E089]???系统.集合.通用.键值对
2[[System.Int32,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089]\0\0\0\b\b\0\0\0\0\0\0\v
您可能更喜欢使用自定义格式进行序列化,或者使用稍微轻一点的标准格式,例如