【问题标题】:Visual Studio 2010 profiler with SQL带有 SQL 的 Visual Studio 2010 探查器
【发布时间】:2011-05-24 19:06:56
【问题描述】:

我正在使用 Visual Studio 2010 的内置分析器来查看一段性能不佳的代码。但是,我看到一些不太有意义的结果。这是报告的截图:

这似乎表明 Regex.Replace 是瓶颈(因此我应该尽量减少或消除这种使用)。但是,这感觉不准确,因为我知道这段特定的代码部分正在大量使用数据库,因此我希望 SqlCommand.ExecuteNonQuery 在本报告中至少比正则表达式高一点,如果不是更占主导地位的话使用。

所以,我的问题是:这个分析器工具对涉及数据库访问的任何事情都没有用,因为 SQL 工作是由另一个进程(即 SQL 服务器)完成的,因此我必须以其他方式对其进行测量?

【问题讨论】:

    标签: c# sql-server visual-studio-2010 profiling


    【解决方案1】:

    Visual Studio 分析器有两种操作模式,采样和检测。 在采样模式下,阻塞时不抽取样本,与 I/O 一样。 因此,它无法向您显示调用树的任何部分,除了叶子正在执行原始 CPU 处理的部分。

    您正在使用采样模式。试试仪表模式,它按挂钟时间运行,因此它包含 I/O。

    无论你做什么,请忽略独享时间。只注意包含时间,占总时间的百分比。 您正在寻找代码中大部分时间都处于活动状态的例程,其中大部分时间用于调用其他例程, 并且您正在寻找可以不用的电话。

    附:我做this,它总是有效的。

    【讨论】:

    • “请忽略独占时间”。当我处于仪表模式时,还是总是?
    • @mgroves:总是。它包含在包容性时间中。在像您这样的真实软件中(与不调用函数的小 1 页算法相反),您代码中的所有例程的独占时间都可以忽略不计。简直是养眼。代码中的耗时者实际上是各种类型的函数调用。您需要找到在挂钟时间中大部分时间都处于活动状态的那些。不在您的代码中的耗时者,您无能为力。
    • @mgroves:顺便说一句,这就是为什么编译器优化对您的代码的影响可以忽略不计 :-)
    • 嗯,这说明了一件事:当我做 Project Euler 问题时,我发现独家示例非常有帮助,但 Euler 解决方案不是“真正的”程序 :)
    • @mgroves:对。理论和实践都很重要,而且完全不同。
    【解决方案2】:

    在我看来,关于 SQL 工作,您对 Visual Studio 分析器的假设是正确的。

    为了检查您的 SQL 工作,更好的选择是运行 SQL Profiler 并跟踪您的查询。您可以设置 SQL 分析器,以显示来自您的应用程序的所有传入查询(...对于相关数据库)的执行计划。这将表明它是您的 SQL 工作还是快照显示的 Regex.Replace。

    哈桑

    【讨论】:

      【解决方案3】:

      Visual Studio Profiler 是一个CPU Profiler。 CPU Profiler 可用于分析 CPU 绑定程序或 IO 绑定程序的 CPU 绑定部分。以下是这些术语的介绍:

      由于您的进程受 I/O 限制,因此 CPU 分析器无法帮助您加快程序运行速度。正如您所怀疑的,您将不得不使用其他工具来分析 SQL 查询,例如:

      或许多其他工具之一。

      【讨论】:

        【解决方案4】:

        您可能还会发现“Tier Interaction Profiling”选项对于使用 Visual Studio 2010 分析器调查 SQL 问题很有用。您可以在性能向导的第 3 页或会话属性中启用此选项(有关屏幕截图,请参阅our blog)。

        使用此模式收集数据后,切换到“Tier Interactions”视图,您将看到有关 SQL 调用的详细信息,包括调用次数和经过的时间(图片来自 profiler 博客)

        【讨论】:

          猜你喜欢
          • 2011-03-28
          • 2012-05-17
          • 2014-05-22
          • 2011-03-15
          • 2016-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多