非常に大きなデータセットに対して非常にタイトなループを実行するメソッドがアルゴリズムにあります。もともとはシングルスレッドで大丈夫でしたが、時間がかかりました。私は今、それをスピードアップしたいと思っているところまで来ているので、今はThreadPoolを使用して作業を並列化しています。問題は、これによりCPU使用率が95〜100%になることです。これは、私が予想していたことです。ただし、パフォーマンスは劇的に向上しましたが、すべてのコンテキスト切り替えを削減できれば、パフォーマンスを向上させることができると思います。これにより、他のプログラムはCPUリソースのためにスレッドと戦わなければならないため、少し遅れます。
私の質問は、これをどのように行うべきかということです。私が考えることができたのは、一度に実行できるスレッドの数を制限することだけですが、一度に実行できるスレッドは数個しかないため、アルゴリズムが遅くなる可能性があります。アルゴリズムをできるだけ早く実行して完了する必要があるため、スレッドにスリープを追加したくありません。
編集:何人かの人々がTPLの使用について言及しました。それは素晴らしいアイデアだと思いますが、残念ながら、親アプリケーションが.NET 4を使用するバージョンをまだリリースしていないため、.NET3.5を使用することに固執していることを忘れました。