4

我知道您可以使用NGen制作 .NET 应用程序的本地预编译映像。

但是您如何衡量您的应用程序在 JIT 中花费了多少时间?哪些分析工具将对此进行测量?有没有免费的工具可以做到这一点?我想知道在这样做之前要节省多少时间。

4

2 回答 2

4

不幸的是,您无法获得“JIT 中的绝对时间”统计数据。CLR 确实公开了它定期更新的“% Time in Jit”性能计数器,但它仅在它选择采样时准确。

您可以通过 Windows 性能监视器工具或通过 RedGate 的 ANTS Profiler 之类的工具轻松访问此性能计数器——这是我第一次接触它的方式。如果您需要以编程方式访问它,可以使用 WMI 或 .NET PerformanceCounter 类。

于 2011-04-24T05:04:36.827 回答
3

这篇关于衡量 JIT 影响的文章非常有帮助。基本上,您会在热启动场景中使用 NGen。冷启动时间通常由将 DLL 加载到内存中来控制。JIT 编译对热启动的影响更大。

关于如何安装 xperf 有点模糊:基本上你想下载Windows 7 .NET 4 SDK并确保选择 Performance Toolkit。然后以管理员身份打开 VS 2010 命令提示符,切换到要配置的程序的目录并按照文章中的命令进行操作。

它的基本要点是,通过 xperf 捕获,您可以深入了解您的进程并查看在 clrjit.dll 中花费了多少时间。在我的例子中,30% 的 CPU 时间都花在了热启动上。

于 2011-05-13T00:57:36.493 回答