問題は、別のプログラム (explorer.exe など) が実行されるときに、そのコードとメモリがすべてスワップ アウトされていることです。他のプログラム用のスペースを確保するために、Windows は最初にプログラムが使用しているデータをディスクに書き込み、次に他のプログラムのメモリをロードする必要があります。他のプログラムで実行されるコードの新しいページごとにディスク アクセスが必要になるため、プログラムの実行が遅くなります。
私はあなたのプログラムのアクセス パターンを知りませんが、Windows がプログラムからメモリ ページを追い出すとすぐに突然再びそれが必要になり、Windows は同じ処理を行うために別のページを見つける必要があります。
他のプロセスにより多くの RAM を割り当てるには、 SetProcessWorkingSetSizeを使用して、プログラムが使用できる RAM の最大量を減らすことができます。もちろん、これにより、より多くのスワッピングを行う必要があるため、プログラムの実行が遅くなります。
別の方法として、システムにドライブを追加し、スワップ ファイルをそれらに分散することもできます。デュアルコア CPU を使用している場合でも、ドライブは 1 つしかありません。スワップ ファイルを複数のドライブに分散することで、Windows は複数のドライブ間で作業のバランスをとることができます (ただし、これがどの程度うまく機能するかを直接経験したことはありません)。