私のソリューションを.net 4.0から.net 4.6.1にアップグレードし、いくつかの奇妙な動作を観察しました。.net 4から4.6.1へのソリューションアップグレード後のパフォーマンス低下
私はプログラムを持っており、このプログラムでは、2倍の配列のバイナリファイルを読み込んでRAMに保存するシーケンス(シーケンス1)を持っています。
シーケンス1(プログラムはシングルスレッド)を実行するたびに、マシンはCPUの25%(4コアマシン内)を使用していました。 シーケンス1で正常に動作しますが(シーケンスは25%で実行されます)、前の場合シーケンス1私はいくつかの算術演算を実行し、いくつかのクラスを割り当てることを実行しますシーケンス0の場合、シーケンス1になると、CPUの70〜90%が使用されます。
ガベージコレクションメカニズムに接続されている可能性があります。私は右のsequence0(sequence1を呼び出す前に)後GC.Collect
をゼロにし、呼び出すためのすべてのクラスを設定しようとしましたが、私はまだ70から90パーセントで動作sequence1を取得します。おそらくこれは、実行中にそれが更新されたGCアルゴリズムに関連していますsequence0?
'gcConcurrent'がアクティブになっている可能性がありますか? app.configファイルで動作を再生できます。主な質問は、今それは速いですか? PGOでもかまいません(私のトップ質問の1つを参照)。 – leppie
問題を推測するのではなく、アプリケーションのパフォーマンスをプロファイルする必要があります。まず、.NETのperfmonカウンタを見て、2つの実行を比較して、何が違うかを確認する必要があります。 – Paolo
@Paolo、私はperfmonを試して比較しますが、比較しなくても、シングルスレッドのプログラムは25%を上回ってはいけません(90%も)。 –