Ang*_*ker 3 c# performance serialization visual-studio-2005
我有以下代码将List序列化为字节数组,以通过Web服务进行传输。该代码在较小的实体上工作相对较快,但这是一个大约60,000个项目的列表。执行formatter.Serialize方法需要几秒钟。无论如何要加快速度?
public static byte[] ToBinary(Object objToBinary)
{
using (MemoryStream memStream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
formatter.Serialize(memStream, objToBinary);
memStream.Seek(0, SeekOrigin.Begin);
return memStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
您遇到的效率低下有几种原因:
ToArray(如Danny所述)。通过实现ISerializable包含在其中的对象类型,您可以立即获得很大的改进List。这将消除使用反射的默认序列化行为。
如果减少保存序列化数据的关联数组中的元素数量,则可以提高速度。确保确实存储在该关联数组中的元素是基本类型。
最后,您可以消除,ToArray但我怀疑您会注意到带来的冲击。