私は研究ツールとして C# を使用しており、最適化などの CPU 集中型のタスクを頻繁に実行する必要があります。理論的には、コードをマルチスレッド化することでパフォーマンスを大幅に改善できるはずですが、実際には、ワークステーションで使用可能なコア数と同じ数のスレッドを使用すると、通常、CPU はまだ 25 でしか実行されていません。 %-最大の 50%。new
ほとんどのスレッドはステートメントの実行を待機するため、コードを中断してすべてのスレッドが何を行っているかを確認すると、メモリ割り当てがボトルネックになっていることが強く示唆されます。
解決策の 1 つは、すべてのコードを再設計して、メモリ効率を大幅に向上させることですが、それは大きく、時間のかかる作業になります。ただし、ワークステーションには十分なメモリがあるので、さまざまなスレッドを設定して、それぞれが独自のプライベート メモリ プールを使用できるようにすることで、この問題を回避できるかどうか疑問に思っています。もちろん、一部のオブジェクトはすべてのスレッド間で公開する必要があります。そうしないと、各スレッドのタスクを指定したり、結果を収集したりすることができなくなります。
この種のアプローチが C# で可能かどうかは誰にもわかりません。