gpt4 book ai didi

c# - MemoryStream 和深度克隆

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:22 24 4
gpt4 key购买 nike

我在其中一种方法中使用 MemoryStream 作为深度克隆。我调用了这个方法几次,我注意到我调用它的次数越多,我的程序就越慢。当我停止使用内存流时,有没有办法每次都清除内存流?

    public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;

return (T)formatter.Deserialize(ms);
}
}

最佳答案

内存流在每次调用 using 语句的末尾处理。但是,它可能要到以后才会被垃圾收集。我不认为潜在的内存使用是你的问题。如果您在调用之间获得明显的速度差异,我认为您每次都必须序列化一个更复杂的对象。如果您刊登诊断声明,例如

Console.WriteLine("Serialized size "+ms.Position);

在调用 Serialize() 之后,它会每次都报告相同的数字,还是会增加大小?如果大小增加,那么您每次都在序列化一个更大的对象图,并且速度变慢是预料之中的。

关于c# - MemoryStream 和深度克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com