プロセスの使用を特定の割合の CPU 消費量に実際に制限する方法はわかりませんが、PowerShell スレッドの優先度を変更できるのではないかと考えました。そこで、簡単なスクリプトを作成してテストを実行しました。
その結果、「通常」と「最低」の両方で、所要時間はほぼ同じでした。CPU メーター ウィジェットを見ると、CPU 使用率は約 27% でしたが、私はクアッド コア ボックスで実行していたので、それは驚くべきことではありません。どちらの場合も、1 つの CPU をすべて使用していました。当時、私のマシンは他に多くのことをしていなかったので、それが残りの 2% だったと思います。
おそらく、ビジー状態のマシンでは結果が異なるでしょう。
スクリプトは次のとおりです。
function Spin
{
param($iterations)
for($i = 0; $i -lt $iterations; ++$i)
{
# Do nothing
}
}
$thread = [System.Threading.Thread]::CurrentThread
Write-Host $thread.Priority
$start = [DateTime]::Now
Write-Host "[$start] Start"
Spin 10000000
$end = [DateTime]::Now
Write-Host "[$end] End"
$span = $end - $start
Write-Host "Time: $span"
$thread.Priority = "Lowest"
Write-Host $thread.Priority
$start = [DateTime]::Now
Write-Host "[$start] Start"
Spin 10000000
$end = [DateTime]::Now
Write-Host "[$end] End"
$span = $end - $start
Write-Host "Time: $span"
$thread.Priority = "Normal"
結果は次のとおりです。
Normal
[08/06/2009 08:12:38] Start
[08/06/2009 08:12:55] End
Time: 00:00:16.7760000
Lowest
[08/06/2009 08:12:55] Start
[08/06/2009 08:13:11] End
Time: 00:00:16.8570000
また、ドキュメントには次のように記載されていることにも注意してくださいThread.Priority
。
オペレーティング システムは、スレッドの優先順位を尊重する必要はありません。