【发布时间】:2012-02-17 02:46:03
【问题描述】:
我们有一个 VB6 应用程序,它会在启动时启动我们的 .NET 代码。
在 Windows XP 机器上,冷启动持续大约需要 22 秒。在同一台机器上热启动大约需要 4 秒。
Windows Vista/7 冷启动大约需要 5 秒,热启动大约需要 3 秒。
基于上述情况,我假设延迟与磁盘访问有关,并且由于 SuperFetch,Vista/7 没有受到影响。
显然,我们需要提高 XP 的冷启动性能。我正在考虑创建一个在 Windows 启动时在系统托盘中运行的“预热”应用程序......但在我们付出努力之前,我想看看是否有任何其他建议。
我已经尝试过对我们的程序集进行更新,但这似乎没有任何区别。
添加一些跟踪代码后,我可以看到 VB6 代码跨越 .NET 边界只需要大约 1 秒...但 .NET 中的初始化代码大约需要 20 秒。它做了一些反思,我猜延迟是从磁盘加载 GAC 程序集......但我不能完全确定。
建议?
【问题讨论】:
-
您确定不只是在使用 CLR 的较新机器上运行的东西并在引导或登录时有效地为您“预加载”它吗?我知道自从 ATI 收购了他们与视频适配器相关的 Catalyst 品牌软件后,其他供应商现在可能也在这样做。
-
这不就是闪屏的用途吗:)
-
是的,但是 20 秒的闪屏效果不太好......
-
这是怎么复制的?我不是在问缓存在哪里...我是在寻求改进问题的建议...
标签: .net vb6 com-interop