我最近將我的機器上的.NET框架升級到了.NET 4.6,並且注意到二進制(反)序列化對象從/到文件的時間差別很大。在.NET 4.6中,二進制序列化速度很慢(有時候)4.6
例如,我有一個10MB的文件,這個文件在我的機器上用.NET 4.5.2進行了大約2秒的反序列化。升級到.NET 4.6後需要50秒(!) - 實際時間非常隨機:有時需要2秒,有時需要50秒(相同的文件,相同的程序,甚至相同的進程)。
是否有其他人注意到類似的行爲,並可能找到解決方法(或解決方案)這個問題?
我最近將我的機器上的.NET框架升級到了.NET 4.6,並且注意到二進制(反)序列化對象從/到文件的時間差別很大。在.NET 4.6中,二進制序列化速度很慢(有時候)4.6
例如,我有一個10MB的文件,這個文件在我的機器上用.NET 4.5.2進行了大約2秒的反序列化。升級到.NET 4.6後需要50秒(!) - 實際時間非常隨機:有時需要2秒,有時需要50秒(相同的文件,相同的程序,甚至相同的進程)。
是否有其他人注意到類似的行爲,並可能找到解決方法(或解決方案)這個問題?
認爲它與二進制序列化有關的一點理由,它非常確定。考慮到隨機行爲和可能性,你會用10兆字節的文件狠狠地撥動垃圾收集器,非常好的候選者是this bug。真是太麻煩了。
如果你有一個很好的repro,然後使用新的診斷工具來查看任何緩慢的gen#1集合。並修改GCSettings.LatencyMode,如果它有一個影響,那麼你知道它是根本原因。應該儘快解決。
當反序列化對象時,我們遇到了與BinaryFormatter
完全相同的問題。正如我們所觀察到的,這是由於框架4.6中的一個錯誤而導致的,該錯誤在框架4.6.1中解決。發現更改列表爲here。有問題的錯誤是並行二進制文件反序列化的改進性能[141896]。
對於我們的應用程序4.6.1沒有解決慢性能不得不回滾到.net 4.5.2 –
@Oldfart正如你我們使用4.5.2 - 正常,4.6非常慢,4.6.1再次正常。 – participant
你能用代碼證明你的陳述嗎? 「有時候某些東西不行」的問題可能會被封閉。在問之前你在研究中做了什麼努力? – netaholic
嗯,我的程序非常複雜(我用數百個字段序列化對象),但我會嘗試找到一個較小的問題示例。 我試圖找到任何關於與.NET 4.6有關的變化(或問題)的信息,但到目前爲止我還沒有找到任何信息(儘管有證據表明.NET 4.6的RyuJIT存在一些嚴重問題,所以也許序列化問題是以某種方式相關的) – Bartek
你是(德)序列化類或結構? –