我有一台带有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的信息.