【译】.NET 的新的动态检测分析

  随着 Visual Studio 16.9 的发布,Visual Studio 中的检测分析变得更好用了。本文介绍我们新的动态分析工具。这个工具显示了函数被调用的确切次数,并且比我们以前的静态检测工具要快。它还支持. NET Core,而不需要 PDB。

尝试下

  在 Visual Studio 中,你可以通过 Debug -> Performance Profiler 或者 Alt-F2 启动性能分析器。进入 summary 页面后,选择 Instrumentation 复选框。

  在分析方面,有两种收集数据的机制。通过插桩(instrumentation)或采样收集。使用插桩,应用程序中的每个函数调用都被注释和插桩,以便在调用它时,它与有关调用者的信息一起添加到跟踪中。通过采样,当前正在执行的调用堆栈以一定的间隔从 CPU 轮询,然后将每个帧添加到跟踪中。

  采样的价值在于它很少被监听,因此更有可能在统计上代表生产中运行的应用程序。插桩分析的价值在于,您可以获得关于函数被调用次数的准确调用计数。这提供了比正常采样分析更详细的信息,在某些场景中,这会导致时间失真。例如,虽然功能不多,但经常调用的函数将比在现实世界中显示的更多。

  对于新的动态插桩场景,还有一些更多的好处。首先,您应该看到该工具运行速度的性能改进。这是因为在这个场景中,我们不再需要使用 VSInstr 来使用插桩。

  其次,我们的动态工具支持没有 PDB 的 .NET Core 项目。在您不得不修改您的构建以生成完整的 PDB 只是为了使用插桩之前。最终,这意味着您可以按原样运行项目,而不需要做任何额外的工作来检测托管代码。

  最后,我们设计了这个检测工具,使其不需要修改您的程序集文件。这意味着我们不会意外地破坏您可能拥有的任何签名,并能够检测所有托管代码。

请给我们反馈

  如果您想与我们的工程团队讨论如何改进这个工具,可以在线填写调查表,我们很快就会联系您。

原文链接

  https://devblogs.microsoft.com/visualstudio/new-dynamic-instrumentation-profiling/

posted @ 2021-05-11 12:20  MeteorSeed  阅读(634)  评论(0编辑  收藏  举报