私は、いくつかの重い数値計算を行うアプリケーションに取り組んでいます。単一のコンピューターで実行することを目的としています。最近、計算を高速化するためにマルチスレッド化を検討し始めました。アルゴリズムの中には、それほど労力をかけずに並列実行できるものもあり、私は固定スレッド プールを使用して各サブタスクを実行しています。
私が疑問に思っていたのは、これらの種類のアルゴリズムに対して通常指定されているスレッドの数 (プールのサイズ) はどのようになっているのかということです。これは通常、構成ファイルまたはコマンドライン パラメーターのいずれかを使用して行われると思われますが、そのような例を見たことがないので、より良い方法があるかどうか疑問に思っていました。
これに関連: スレッド数を指定することは関係ありますか? プール サイズを割り当て可能なコアの数に設定すると最も高速に実行される可能性が高いと考えていましたが、過剰な割り当ての場合の処理能力のスレッド競合は、パフォーマンスにも関連していますか? 例: 4 コア マシンで 20 の最大スレッドを設定することは、4 つの最大スレッドを設定するよりも悪くなりますか?
編集:アプリケーションは販売を目的としているため、どのコンピューターで実行されるかわかりません. 一般的なガイドラインとベスト プラクティスを探しています。