当前位置:  开发笔记 > 编程语言 > 正文

如何使用生成的IL来做出决策并寻找瓶颈?

如何解决《如何使用生成的IL来做出决策并寻找瓶颈?》经验,为你挑选了1个好方法。

如果我查看为我的C#代码生成的il(我可以使用优秀的LINQPad工具执行此操作),我应该寻找什么来找出可能是性能瓶颈?

我已经阅读了"内部中间语言"这本书来理解代码,但它并没有真正涵盖如何使用这些信息来做出决策,从而改变.

谢谢



1> Reed Copsey..:

检查IL有助于缩小哪些特定代码行导致意外的副作用,但对于追踪性能瓶颈可能不太有用.

我建议为此目的使用分析器.理想情况下,运行采样和跟踪分析器(如果它非常重要).一旦您在分析器中找到了瓶颈,您就可以查看IL来帮助您解决问题.

然而,通常情况下,分析器结果会突出显示问题,而且需要更改的内容相当明显.如果代码不明显,检查IL本身可能会有所帮助.我发现这个有用的唯一地方是代码被运行多次(例如,在紧密的循环中).您可以比较两种不同的方法来编写代码块,并查看哪种方法可以产生最快/最紧凑的IL.

此外,你不能总是脱离IL - 有时候,JIT可以更好地处理看起来更慢(和更长)的IL,而不是简单的IL.请记住,IL不是直接运行的 - 它在运行之前已经过编译(和优化).这是采样分析器可以帮助或做自己的时间的地方.

但是,查看IL非常适合深入了解.net如何工作,从长远来看这非常有价值.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有