5

コア #7 に割り当てられた .NET スレッドがあります。スレッド関数は 300ms に 1 回トリガーされます。最初は、1 つの呼び出しを実行するのに約 20 ~ 30 ミリ秒かかります。しかし、この時間は徐々に増加し、約 2,52,000 回の呼び出し後に 150 ミリ秒以上になります。

また、コア #7 の使用率が 10% から始まることに気付きました。スレッド関数の呼び出し回数が 252,000 回に達するまでに、コア #7 のプロセッサ使用率は約 60% になります。スレッド機能のトリガーを停止すると、プロセッサ使用率が 0% になります。しかし、再びトリガーを開始すると、コア使用率は 60% (0% からではなく) から始まり、再び徐々に増加します。

また、アプリケーションのメモリ リークがないことにも気付きました。

スレッド関数内で、2 つの辞書の要素を結合し、foreach ループで別の辞書に追加しています。ディクショナリの要素数は常に 45 です。

このアプリケーションを 24 時間年中無休で実行したい。このプロセッサの使用率を一定にするためのヒントを教えてください。

4

1 に答える 1

4

に項目を追加するとDictionary、容量を増やす必要がある場合があります。あなたの辞書は永遠に成長し続けますか?

MSDNから:

Count が容量より小さい場合、このメソッドは O(1) 操作に近づきます。新しい要素に対応するために容量を増やす必要がある場合、このメソッドは O(n) 操作になります。ここで、n はカウントです。

于 2012-11-13T04:30:37.617 に答える