ほとんどの問題は、多くの CPU 時間を必要としません。実際、シングル コアは多くの目的で十分に高速です。プログラムが遅すぎることがわかった場合は、まずプロファイルを作成し、選択したアルゴリズム、アーキテクチャ、およびキャッシングを調べます。それでも十分でない場合は、問題を別々のプロセスに分割してみてください。多くの場合、これは単純に障害を分離し、各プロセスの CPU とメモリの使用状況を理解できるようにする価値があります。また、通常、各プロセスは特定のコアで実行され、プロセッサ キャッシュを有効に活用するため、キャッシュ ラインの一貫性を維持するための実質的なパフォーマンス オーバーヘッドに苦しむ必要はありません。マルチプロセス設計を行っても、問題がマシンで得られるよりも多くの CPU 時間を必要としていることがわかった場合は、クラスター上で実行するように拡張することができます。
同じアドレス空間内に複数のスレッドが必要な場合もありますが、スレッドを正しく処理するのは非常に難しいことに注意してください。競合状態は、特に安全でない言語では、デバッグに数週間かかることがあります。多くの場合、単にトレースを追加したり、デバッガーで実行したりするだけで、問題を隠すのに十分なタイミングが変更されます。単純にどこにでもロックを配置すると、多くの場合、多くのロック オーバーヘッドが発生し、場合によっては非常に多くのロック競合が発生するため、期待していた並行性の利点が実際には得られません。ロックする権限を持っている場合でも、プロファイルを作成してキャッシュの一貫性を調整する必要があります。最終的に、非常に並行性の高いコードを実際に調整したい場合は、現在のマルチスレッド ライブラリよりもロックのない構造やより複雑なロック スキームを検討することになるでしょう。