重新启动(冷启动)后,我们的应用程序比启动一次(热启动)需要更多的时间.
大多数(如果不是全部)差异似乎来自加载DLL,当DLL在缓存的内存页面中时,加载速度要快得多.我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动耗时少得多)并得到了混合结果,在某些机器上它似乎非常一致地模拟重启,而在某些机器上则没有.
总结我的问题是:
您是否在冷启动和暖启动之间的启动时间方面存在差异?
你是如何解决这些差异的?
你知道一种可靠地模拟重启的方法吗?
编辑:
澄清意见:
该应用程序主要是带有一些.NET的本机C++(第一个加载的.NET程序集支付CLR).
我们正在寻求改善加载时间,显然我们分享了分析并改进了代码中的热点.
我忘了提到的一点是我们通过重新设置所有二进制文件来获得一些改进,因此加载器不必在加载时执行它.
至于模拟重启,您是否考虑过从虚拟PC运行您的应用程序?使用虚拟化,您可以方便地一遍又一遍地复制一组条件.
我还会考虑使用某种类型的性能分析应用程序来查找导致时滞的代码,然后判断该代码有多少是真正必要的,或者是否可以以不同的方式实现.