我有一台带有Power
shell V4.0的
Windows 2008 R2服务器
我有一个非常简单的脚本test.ps1,内容如下:
Write-host "Hello world!"
measure-command { powershell.exe -file .\test.ps1 }
你可以看到我的价值非常高:
Days : 0 Hours : 0 Minutes : 0 Seconds : 7 Milliseconds : 992 Ticks : 79922815 TotalDays : 9,25032581018519E-05 TotalHours : 0,00222007819444444 TotalMinutes : 0,133204691666667 TotalSeconds : 7,9922815 TotalMilliseconds : 7992,2815
要么
Days : 0 Hours : 0 Minutes : 0 Seconds : 4 Milliseconds : 655 Ticks : 46556579 TotalDays : 5,38849293981481E-05 TotalHours : 0,00129323830555556 TotalMinutes : 0,0775942983333333 TotalSeconds : 4,6556579 TotalMilliseconds : 4655,6579
它占用我的cpu 50%.为什么太长了?我尝试使用-noprofile,但它是一样的.
谢谢你的帮助.
Powershell负载和JIT编译吨,吨和吨的东西.这需要大量过多的cpu周期和磁盘I / O.
尝试使用ngen.exe (Native Image Generator)预编译Powershell在启动期间加载的程序集.只是可能会改善您的启动时间.
$FrameworkDir=[Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory() $NGENPath = Join-Path $FrameworkDir 'ngen.exe' [AppDomain]::CurrentDomain.GetAssemblies() | Select-Object -ExpandProperty Location | ForEach-Object { & $NGENPath """$_""" }
阅读关于ngen here的信息.