我已將.net 4.0解決方案升級到.net 4.6.1並觀察到一些奇怪的行爲。解決方案從.net 4升級到4.6.1後性能下降
我有一個程序,在這個程序中我有一個序列(稱爲sequence1),它讀取雙精度數組的二進制文件並將數據保存在RAM中。
在升級之前,每當我運行這個sequence1(程序是單線程的)時,機器使用25%的CPU(在4核心機器中)。 自升級以來,這種行爲發生了改變,如果我用sequence1開始我的程序,我得到正常行爲(序列運行在25%),但如果在執行某些算術計算並分配一些類之前,我們稱之爲sequence1sequence0,然後當我到達sequence1它使用70-90%的CPU。
我認爲這可能會連接到垃圾收集機制。我試過設置所有的類爲空,並在序列0之後立即調用GC.Collect
(在致電序列之前),但我仍然得到序列1,其運行在70-90%;也許這與GC算法有關,它更新了它在執行序列0時發生了脫落?
也許'gcConcurrent'現在處於活動狀態?你可以玩app.config文件中的行爲。主要問題是,現在速度更快嗎?也可以是PGO(參見我的一個重要問題)。 – leppie
您需要描述應用程序的性能,而不是對問題進行猜測。首先你應該看看.NET的perfmon計數器,並將這兩個運行與這些運行進行比較,以查看有什麼不同。 – Paolo
@Paolo,我會嘗試perfmon和比較,但即使沒有比較,單線程程序不應該超過25%(更不用說90%),應該嗎? –