Mot*_*tti 12 windows performance reboot
重新启动(冷启动)后,我们的应用程序比启动一次(热启动)需要更多的时间.
大多数(如果不是全部)差异似乎来自加载DLL,当DLL在缓存的内存页面中时,加载速度要快得多.我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动耗时少得多)并得到了混合结果,在某些机器上它似乎非常一致地模拟重启,而在某些机器上则没有.
总结我的问题是:
编辑:
澄清意见:
我忘了提到的一点是我们通过重新设置所有二进制文件来获得一些改进,因此加载器不必在加载时执行它.
您如何分析您的代码?并非所有分析方法都是相同的,有些方法比其他方法更能找到热点。您正在加载大量文件吗?如果是这样,磁盘碎片和寻道时间可能会发挥作用。
也许甚至将基本的计时信息粘贴到代码中、写入日志文件并在冷/热启动时检查文件将有助于确定位置花费了时间。
如果没有更多信息,我会倾向于文件系统/磁盘缓存作为两种环境之间可能的差异。如果是这种情况,那么您要么需要花更少的时间预先加载文件,要么找到更快的方法来加载文件。
示例:如果您要加载大量二进制数据文件,请通过将它们组合成一个文件来加快加载速度,然后一次读取将整个文件放入内存并解析其内容。更少的磁盘寻道和从磁盘读取数据所花费的时间。再说一次,也许这并不适用。
我不知道有什么工具可以清除磁盘/文件系统缓存,但是您可以编写一个快速应用程序来从磁盘读取一堆不相关的文件,从而导致文件系统/磁盘缓存加载不同的信息。