0

通常、コアごとに1つのスレッドが必要なCPUバウンドのタスクの場合、コアごとにさらにスレッドを追加し始めることができることを理解しています。しかし、スレッドごとのタスクはどうですか(または同じものですか)?

Runnable大きな問題を最適な数のsにまとめて、それらをに送信できるようにする方法を見つけようとしていExecutorます。私の理解では、Executor使用するスレッドの数を構成できます(したがって、必ずしも1対1である必要はありません)。

したがって、私の質問は次のとおりです。特定のアプリケーションについて、コアあたり5スレッドが最適な比率であると判断したとします。しかし、最初に作成するタスクの最適な数()を決定するにはどうすればよいですか?Runnables

4

2 に答える 2

0

あなたはそれをあなたが幸せになるまであなたが変えることができるノブにします。ワークステーションで機能する可能性があるものは、デプロイメントサーバーでは機能しない可能性があります。場合によります。片方の手でノブをつかみ、もう片方の手でストップウォッチをつかみ、満足のいく結果が得られるまでベンチマークを行います。

于 2012-06-29T18:22:21.823 に答える
-1

アムダールの法則を知っていますか?

この式を使用すると、マルチスレッドアプリケーションがシングルスレッドの場合と比較して得られる潜在的なスピードアップ判断できます。

アムダールの法則

要約すると、次の式があります。

スピードアップ= 1/(1-p)+(p / n)

どこ

pは並列分数、 1- pは順次分数、 nはプロセッサの数です。

60%の並行コードと40%の順次コードで構成されるアプリケーションがある場合、並列の割合は0.6、順次の割合は0.4になります。

これがお役に立てば幸いです

于 2012-06-29T18:13:05.373 に答える