我最近将我的机器上的.NET框架升级到.NET 4.6,并注意到文件中对象的二进制(反)序列化的时间差异很大。
例如,我有一个10MB的文件,在我的机器上使用.NET 4.5.2在~2秒内反序列化。升级到.NET 4.6后,它需要50秒(!) - 实际时间非常随机:有时需要2秒,有时50秒(相同的文件,相同的程序,甚至相同的过程)。
有没有其他人注意到类似的行为,可能会找到针对此问题的解决方法(或解决方案)?
答案 0 :(得分:4)
没有什么理由认为它与二进制序列化有关,这是非常确定的。鉴于随机行为以及您使用10兆字节文件大量使用垃圾收集器的可能性,一个非常好的候选者是this bug。相当糟糕。
如果你有一个好的repro,那么使用新的诊断工具来查看任何慢速#1系列。并修改GCSettings.LatencyMode,如果它有影响,那么你知道它是根本原因。应尽快解决。
答案 1 :(得分:0)
在反序列化对象时遇到与BinaryFormatter
完全相同的问题。我们观察到这是由于框架4.6中的一个错误,它在框架4.6.1中得到了解决。找到更改列表here。令人讨厌的错误是提高了并行二进制文件反序列化的性能[141896] 。