【发布时间】:2022-03-05 17:16:54
【问题描述】:
我正在考虑在我们的 Perforce 服务器上使用 Powershell 脚本作为触发器。不幸的是,即使在我们快速的硬件上,Powershell 仍然需要 2 秒才能启动。现在,除非您考虑到 200 个用户不断地冲击服务器,并且触发器可能(取决于条件)在运行时导致表锁定,从而停止其他相关请求,否则这似乎不是很长的时间。
我正在寻找减少 Powershell 启动时间的方法。我在 Google 上找到的东西:
- 减少配置文件。这是默认安装,没有配置文件自定义,没有 PSCX 等,所以这没有帮助。
- 在 Posh 二进制文件上运行 NGEN。 这是针对 V1 问题的旧建议。我们正在使用 V2。
- 保持温暖。 Posh 最初的启动速度很慢,但后来的启动速度很快。对我们也没有帮助。在服务器上,热启动为 2 秒,并通过频繁的请求保持温暖。
- 不要为此目的使用 Powershell。 好吧,我希望避免这种“解决方案”......
还有其他关于缩短启动时间的建议吗?我不希望启动像 cmd.exe 或 .NET 命令行应用程序那样快,但如果我能把它缩短到 0.5 秒,我想我们会没事的。不可能?
更新 - 事实证明这是一个 4.0 问题。如果我按照another SO question 中的描述添加配置文件,则启动需要 2 秒。如果我将其保留为默认值,则启动时间不到四分之一秒。
然后我想..也许这是一个 4.0 GAC 问题。所以我在PowerShell Blog 上运行了脚本,但它说所有程序集都已经ngen'd。我确定它确实也在使用 4.0 ngen。
所以我有两个选择:
- 弄清楚为什么 4.0 比 3.5 贵这么多。
- 切换到我不需要它但我确实需要性能的 3.5 框架。
我很想解决第一个问题,但不知道从哪里开始。有人可以帮忙吗?
【问题讨论】: