ご回答を有難うございました。
「デスクトップ Windows は文字通りデスクトップでユーザーが(ストレスなく)対話型の操作ができることを主な目的・用途に作られているので、アクティブでないデスクトップのバックグラウンドで実行されている処理のパフォーマンスよりユーザーが利用しているアクティブなデスクトップが優先されるのはある意味当然の結果だと思います。」
仰るとおりです!
バックグランド処理の優先度を上げた代わりに、デスクトップでの作業が阻害されるのであれば本末転倒ですね。
私の方でいろいろ調べていたところ、全ての論理プロセッサを100%で稼働させる代わりに、比較的多くの論理プロセッサ(具体的にはP-Coreのみ)を100%稼働させておくことができる方法が見つかりましたので、共有します。
PowerShellで次を実行するだけで実現できました。2行目の0xFFFFは、プログラムで使用したい論理プロセッサ(P-Core)の数を指定します。私の環境ではP-Coreが16個でしたので、16ビット分を1にした0xFFFFを指定しました。
$proc = Start-Process -FilePath "program.exe" -PassThru$proc.ProcessorAffinity = 0xFFFF
この状態で、別の仮想デスクトップへ移動しても、E-Coreのみに制限されることはありませんでした。しかし、P-Coreの数を超えて(例えば、E-Coreが一つ含まれる0x1FFFFなど)指定してしまうと、別の仮想デスクトップへ移動すると、一つのE-Coreのみで計算されるようになりました。
結論として、$proc.ProcessorAffinity に P-Coreの数を指定しておけば、別の仮想デスクトップに移動しても、16個のP-Coreの100%稼働は継続されるため、この方法を利用したいと思います。