1

私はデュアル コアプロセッサを持っています。たとえば、"Hey, how are you?" などのスパム メッセージを送信するスパム ボット プログラムを作成したいとします。

私の質問は、5 つのスレッドまたは 100 のスレッドを実行してメッセージをボットする場合、これらのメッセージを最速でポップアップできるスレッドの数はいくつでしょうか? (もちろん、これらの数値は特別なものではなく、単なる例です)。すべてのスレッドがスレッドセーフで実行されます。

編集:以前の反対票については、私は実際にスパムボットプログラムを書いているわけではありません。質問の例として言及しただけです。誤解して申し訳ありません

4

2 に答える 2

6

理想的なスレッド数は、ハードウェア(この場合はデュアルコアプロセッサ)と、それらのスレッドが実行していることによって異なります。CPUを集中的に使用する場合、コアごとに1つを超えるスレッドを使用すると、速度が低下する可能性があります。

スレッドがある程度のIOを実行する場合、スレッドを追加することで全体的なパフォーマンスの向上が見られます。収穫逓減のポイントは、CPU以外のタスクの性質と特定のハードウェアに完全に依存します。

そのポイントを見つけるには、さまざまなスレッドの合計をテストする必要があります。

使用中のスレッドの数を自己調整するようにシステムを設計できます。私はかつて、CPUの総負荷が約70%のときに、最高のパフォーマンス(最大の総スループット)を発揮するシステムを設計しました。その値を最適化するために、CPUが70%、+ /-5%になるまでスレッドを追加しました(スレッド間に遅延があります)。80%を超えた場合は、1つ以上のスレッドに、現在の作業を終了して終了するように通知しました。60%を下回ったら、徐々にスレッドを追加しました。チャームのように働いた。

于 2012-08-21T17:16:48.223 に答える
0

プロセッサよりも多くのスレッドを意図的に作成することは、「予備サイクル」を利用するために使用される標準的な手法です。この場合、I/O、ミューテックス、またはその他の何かを待機するためにスレッドがブロックされます。行う。

スレッドが I/O を実行している場合、これは高速化の有力な候補です。各スレッドが I/O を待ってブロックするため、プロセッサは I/O をブロックしすぎるまで他のスレッドを実行できます。最初のスレッドのデータが準備できる時間など。

出典:アンソニー・ウィリアムズ

于 2012-08-21T17:19:04.770 に答える