【问题标题】:How many seconds does a "sample" represent in the profiler?“样本”在分析器中代表多少秒?
【发布时间】:2013-09-27 23:03:10
【问题描述】:

在 Visual Studio Profiler 中,有一个选项可以使用“采样”分析方法,该方法可用于我的 ASP.NET MVC 应用程序:

Visual Studio Profiling Tools 的采样分析方法 以设定的时间间隔中断计算机处理器并收集 函数调用栈。调用堆栈是一种动态结构,用于存储 有关在处理器上执行的功能的信息。

这让我可以粗略地了解哪些代码的执行时间最长。但是,我不确定每个样本值代表多少时间。 3,441 是 34.41 秒吗?也许没有纯粹的时间测量转换。如果是这样,有人可以解释为什么吗?文档声称有固定的间隔,但没有详细说明每个间隔持续多长时间。

【问题讨论】:

    标签: c# asp.net asp.net-mvc visual-studio profiling


    【解决方案1】:

    在我的理想世界中,没有人会关心单个例程或代码行的时间测量是多少,只要样本发生在人们关心的时间间隔内,并且与程序的状态无关。

    重要的是包含百分比。

    对于出现在堆栈样本上的每一行代码,它出现在样本上的百分比(在末尾或中间)很重要,因为这是如果可以删除它可以节省的时间百分比。

    (另外,除非我错了,否则我不相信 VS 分析器会在 I/O 期间进行采样,这使得它对不必要的 I/O 视而不见。)

    回复您的评论:假设样本为 100/秒 vs. 10/秒,总时间为 10 秒,因此样本数为 1000 vs. 100。 如果一行代码在 20% 的堆栈样本上,那么无论采样率如何,删除它都会节省 20% 的 10 秒或 2 秒。 这就是采样率无关紧要的原因。

    【讨论】:

    • 谢谢,感谢您的回答,但我确实关心时间测量。如果有固定的采样间隔,你能解释一下为什么没有固定的时间吗?
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 2011-02-23
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多