我正在考虑在我们的 Perforce 服务器上使用 Powershell 脚本作为触发器。不幸的是,即使在我们的快速硬件上,Powershell 启动仍然需要 2 秒。现在,这似乎没有多少时间,除非您考虑到 200 个用户不断冲击服务器,并且触发器可能(取决于条件)在运行时导致表锁定,从而拖延其他相关请求。
我正在寻找减少 Powershell 启动时间的方法。我在谷歌上找到的东西:
有没有人有其他减少启动时间的建议?我不希望启动像 cmd.exe 或 .NET 命令行应用程序一样快,但如果我能把它缩短到 0.5 秒,我想我们会没事的。不可能的?
更新 - 事实证明这是一个 4.0 问题。如果我按照 another SO question 中的描述添加配置文件启动需要 2 秒。如果我将其保留为默认值,则启动时间不到四分之一秒。
然后我想..也许这是一个 4.0 GAC 问题。所以我在 PowerShell Blog 上运行了脚本但它说所有的程序集都已经 ngen'd。我确保它确实也在使用 4.0 ngen。
所以我有两个选择:
我很想解决第一个,但不知道从哪里开始。任何人都可以帮忙吗?
最佳答案
Run NGEN on Posh binaries. This is old advice for a V1 issue. We're on V2.
我一直在V3下玩这个,我发现有些图像是
生成。
而且感觉现在启动速度要快得多。之后我会知道的更好
重启,因为第一次总是最糟糕的。这样做的(我更新的)脚本
使用 Win 7 是
$env:path = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
if (! $_.location) {continue}
$Name = Split-Path $_.location -leaf
Write-Host -ForegroundColor Yellow "NGENing : $Name"
ngen install $_.location | % {"`t$_"}
}
关于performance - Powershell在4.0环境下如何加速启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208694/