与已经打开一次(热启动)相比,我们的应用程序在重新启动(冷启动)后启动所需的时间要长得多。
大多数(如果不是全部)差异似乎来自加载 DLL,当 DLL 位于缓存的内存页面中时,它们的加载速度要快得多。我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动花费的时间要少得多)并且得到了好坏参半的结果,在某些机器上它似乎非常一致地模拟了重新启动,而在某些机器上则不是。
总结一下我的问题是:
- 您是否经历过冷启动和热启动之间的启动时间差异?
- 你是如何处理这些差异的?
- 你知道一种可靠地模拟重启的方法吗?
编辑:
澄清评论:
- 该应用程序主要是带有一些 .NET 的本机 C++(加载的第一个 .NET 程序集为 CLR 付费)。
- 我们正在寻求改善加载时间,显然我们做了我们的分析并改进了代码中的热点。
我忘了提到的是,我们通过重新构建所有二进制文件得到了一些改进,因此加载程序不必在加载时执行此操作。