[英]How to speed up startup of Powershell in the 4.0 environment?
我正在考虑在Perforce服务器上使用Powershell脚本作为触发器。 不幸的是,即使在我们的快速硬件上,Powershell启动仍需要2秒钟。 现在,除非您考虑到200个用户不断地敲击服务器,并且触发器可能(取决于条件)在运行时导致表锁定,停止其他相关请求,否则这似乎不是很多时间。
我正在寻找减少Powershell启动时间的方法。 我在Google上找到的东西:
有没有人有任何其他建议减少启动时间? 我不希望像cmd.exe或.NET命令行应用程序那样快速启动,但是如果我能得到这个.5秒,我想我们会没事的。 不可能?
更新 - 事实证明这是一个4.0问题。 如果我按照另一个SO问题中的描述添加配置文件,启动需要2秒。 如果我将其保留为默认值,那么启动时间不到四分之一秒。
然后我想..也许这是4.0 GAC问题。 所以我在PowerShell博客上运行了脚本,但它说所有的程序集都已经完成了。 我确信它确实也使用了4.0 ngen。
所以我有两个选择:
我想先解决第一个但不知道从哪里开始。 有人可以帮忙吗?
在Posh二进制文件上运行NGEN。 对于V1问题,这是一个老建议。 我们在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$_"}
}
如果你坚持使用控制台主机powershell.exe,我担心你可能会运气不好,除非你想通过在自定义控制台应用程序中托管运行空间/运行空间来编写优化的脚本处理器 - 或者是Windows服务 - 你滚动你自己。 你可能会刮掉第二个,但是不太可能为.NET应用程序启动0.5秒,特别是如果服务器内存紧张的话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.