我们的应用程序在重新启动(冷启动)之后要花费更多的时间来比已经打开一次(热启动).
大多数(如果不是全部)差异似乎来自加载DLL,当DLL处于高速缓存的内存页面中时,它们加载速度更快.我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动的时间要少得多),并且得到了混合的结果,在一些机器上似乎模拟了非常一致的重新引导,有些不是.
总结我的问题是:
>您是否在寒冷和暖暖的开始之间遇到了发射时间的差异?
>你有什么差别吗?
>你知道一种可靠地模拟重启的方法吗?
编辑:
澄清意见:
>应用程序主要是native C和一些.NET(第一个加载为CLR的.NET程序集).
>我们正在寻求改善加载时间,显然我们在我们的代码中做了我们的分析和改进热点.
我忘记提到的是,通过重新建立所有二进制文件,我们得到了一些改进,因此加载程序不必在加载时执行此操作.
你是如何配置你的代码的?并不是所有的分析方法都是平等的,有些则比其他方法更好.你在加载大量文件吗?如果是这样,磁盘碎片和寻找时间可能会发挥作用.
甚至可以将基本的定时信息粘贴到代码中,并写入日志文件,并在冷/热启动时检查文件将有助于确定应用程序在哪里花费时间.
没有更多的信息,我会倾向于文件系统/磁盘缓存,因为两个环境之间的差异.如果是这样,那么您需要花更少的时间加载文件,或者找到更快的方式加载文件.一个例子(可能不适用)是,如果要加载二进制数据文件的加载是将它们全部组合成单个文件,请在一次读取中将整个文件的一个文件拖放到内存中,然后解析出其内容.较少的磁盘和时间花费阅读磁盘.再一次,也许这不适用.我不知道任何清除磁盘/文件系统缓存的工具,但是您可以编写一个快速应用程序来读取一堆与磁盘不相关的文件,从而使文件系统/磁盘缓存加载不同的信息.