我知道您可以使用NGen制作.NET应用程序的本机预编译图像。
但是,您如何衡量应用程序在JIT中花费的时间?什么分析工具会衡量这一点?有没有免费的工具呢?我想知道在这之前要节省多少时间。
答案 0 :(得分:4)
不幸的是,你将无法获得“JIT绝对时间”的统计数据。 CLR确实暴露了一个“它在Jit中的时间”性能计数器,它会定期更新,但它只是选择采样的准确性。
您可以通过Windows性能监视器工具或RedGate的ANTS Profiler等工具轻松访问此性能计数器 - 这是我第一次接触到它。如果需要以编程方式访问它,可以使用WMI或.NET PerformanceCounter类。
答案 1 :(得分:3)
This article about measuring JIT impact非常有帮助。基本上你会使用NGen来进行温暖的启动方案。冷启动时间通常通过将DLL加载到内存中来主导。 JIT编译对热启动有更大的影响。
关于如何安装xperf有点模糊:基本上你想下载Windows 7 .NET 4 SDK并确保选择Performance Toolkit。然后以管理员身份打开VS 2010命令提示符,切换到要分析的程序的目录,并按照文章中的命令进行操作。
它的基本要点是,通过xperf捕获,您可以深入了解您的进程,看看在clrjit.dll中花了多少时间。在我的情况下,30%的CPU时间用于热启动。