实施行级分析

Posted

技术标签:

【中文标题】实施行级分析【英文标题】:Implementing line-level profiling 【发布时间】:2013-07-16 10:23:03 【问题描述】:

上周左右我一直在使用 CLR Profiling API,作为夏季的宠物项目。

我开始思考 ANTS 和 DotTrace 如何实现行级分析。我在 Profiling API 中看不到任何与此相关的内容,所以我认为他们有一些专有的东西。

我正在寻找有关他们如何实现这一点的指针或想法。

当代码被 JIT'ed 时,他们会注入 MSIL 代码吗?

【问题讨论】:

如果你这样做的原因是想办法加速代码(位置精度比时间精度更重要),我依赖的方法是this 我实际上已经看到了这个答案,这是有道理的。我这样做不是因为我想加快一些特定的代码,只是因为我很好奇:) 有两种方法,检测和堆栈采样。检测涉及将调用插入代码中,因此具有侵入性且成本高昂。堆栈采样(如Zoom)是非侵入性的,并提供线路级成本。我不确定是否有任何.net。如果没有,应该有。 【参考方案1】:

开箱即用的 CLR 分析 API 支持仅在进入和离开级别进行跟踪。这可以使用ICorProfilerInfo::SetEnterLeaveFunctionHooks来完成

为了进行更精细的跟踪,需要对 IL 进行编织。您可以使用这些开源分析器代码作为参考:

OpenCover PartCover

JITCompilationStarted 回调期间的两个编织代码。

【讨论】:

感谢您的回复。是的,我的输入、离开和尾调用回调工作得很好。将仔细查看您提到的项目,仅简要查看了其中一个的代码。

以上是关于实施行级分析的主要内容,如果未能解决你的问题,请参考以下文章

QuickBI助你成为分析师-保证数据安全:行级权限

MySQL死锁原因分析

mysql 啥时候开启行级锁

mysql 死锁简单分析

**MySQL锁机制与用法分析**

实施定量风险分析