衡量应用启动性能

时间:2009-09-28 14:06:04

标签: .net caching c++-cli startup measurement

我在Windows上使用C ++ / CLI。这是一个使用/ clr。

构建的MFC应用程序

我想测试启动应用程序需要多长时间。这是第一次需要10秒,但随后花了4s,4s,5s。我假设这是由于Windows缓存DLL。

是否有一些工具允许我从缓存中删除目录,以便每次我的测试条件都相同?我不想在测试之间重新启动:)

2 个答案:

答案 0 :(得分:3)

如果您正在使用.Net框架,那么6秒钟可能正在等待框架初始化(加载mscoree.dll等)。 CLR Inside Out: Improving Application Startup Performance是为MSDN杂志撰写的一篇文章。

冷启动需要加载所有.Net Framework以及运行JIT编译器来生成代码。

  

在大多数情况下,冷启动是受I / O限制的。换句话说,等待数据花费的时间多于处理指令所花费的时间。启动应用程序所花费的时间等于操作系统从磁盘获取代码所需的时间加上执行其他处理所需的时间,例如JITing IL代码以及在启动路径中执行的任何其他初始化应用。由于处理通常不是冷启动的瓶颈,因此任何应用程序启动性能调查的最初目标都是通过减少加载的代码量来减少磁盘访问。

当您第二次启动应用程序时,几乎所有这些都已完成。即DLL已加载,它可能会拉取先前编译的代码等。

您可以做的最好的事情是减少启​​动时间是在第一个窗口显示之前减少.Net框架调用的数量(因为所有这些都需要在运行之前进行编译)并减少磁盘数量启动程序需要I / O.

一旦你的程序启动并运行,JIT编译器在第一次调用它时将编译来自.Net的任何未编译的IL。

另外,据我所知,一旦加载了Framework,就没有一种简单的方法可以在不重新启动的情况下卸载它(如果你可以卸载它)。在加载框架之前将虚拟机置于保存状态可以大大减少“重新启动”所需的时间。

答案 1 :(得分:0)

约书亚说了什么,再看看this answer的第三段。

相关问题