c# - 为什么 IDE 不提供像断点这样的内置代码计时功能?

标签 c# visual-studio ide benchmarking

我发现为性能计时我的代码有点令人头疼,我不得不假设这是人们的常见问题。

添加一堆代码来对循环进行计时固然很棒,但添加计时检查通常会比添加并行任务产生更多开销。 并行循环可能需要几秒钟的时间,而添加计时 block 则需要几行代码,如果忘记的话会很危险。

所以...我的问题是为什么 IDE 不包含像断点一样对代码块进行计时的功能? 就像我标记一段代码并告诉它将计时输出转储到控制台,并带有一些选项以使其更具可读性。平均值等。

我知道断点会严重影响性能,但必须有一种更简单的方法来对特定代码块进行计时,然后为我想要检查的每个代码块编写我自己的计时例程。

最佳答案

首先,VS 2015 does offer timing indicators while debugging .


(来源:s-msft.com)

但我说不要将它用于严肃的分析目的。使用它可以非常粗略了解正在发生的事情。

由于多种因素(禁用编译器优化、禁用 JIT 优化、到处都是 nop 指令、断点等),在调试构建中对任何内容进行计时都会产生不可靠的数字。垃圾进来,垃圾出去。

只要正确地进行分析即可,这是一件很难的事情。如果您需要详细的性能数据,请使用真正的分析器。

关于c# - 为什么 IDE 不提供像断点这样的内置代码计时功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312748/

相关文章:

c# - 如何通过接口(interface)继承在C#中重新定义一个属性?

c# - 使用 WindowsXamlHost Overlay 托管 CaptureElement

visual-studio - 使 IDE 选项卡按 MRU 排序的 Visual Studio 注册表设置是什么?

java - 如何在 IntelliJ 中启用 "show method chain hint"?

android - Android Studio Gradle同步问题:红色变量名随处可见

c# - 如果连接在 .NET 远程服务器上的远程调用中途终止,会发生什么情况?

c# - .NET 权限异常中的网络数据包嗅探

c++ - 如何在 C++ 中使用带有 'do while' 循环的计数器?

.NET Core 发布 appsettings.json

c++ - 为什么通过指针调用 std::stringstream good() 会导致崩溃?