“样本”在分析器中代表多少秒?
Posted
技术标签:
【中文标题】“样本”在分析器中代表多少秒?【英文标题】: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 秒吗?也许没有纯粹的时间测量转换。如果是这样,有人可以解释为什么吗?文档声称有固定的间隔,但没有详细说明每个间隔持续多长时间。
【问题讨论】:
【参考方案1】:在我的理想世界中,没有人会关心单个例程或代码行的时间测量是多少,只要样本发生在人们关心的时间间隔内,并且与程序的状态无关。
重要的是包含百分比。
对于出现在堆栈样本上的每一行代码,它出现在样本上的百分比(在末尾或中间)很重要,因为这是如果可以删除它可以节省的时间百分比。
(另外,除非我错了,否则我不相信 VS 分析器会在 I/O 期间进行采样,这使得它对不必要的 I/O 视而不见。)
回复您的评论:假设样本为 100/秒 vs. 10/秒,总时间为 10 秒,因此样本数为 1000 vs. 100。 如果一行代码在 20% 的堆栈样本上,那么无论采样率如何,删除它都会节省 20% 的 10 秒或 2 秒。 这就是采样率无关紧要的原因。
【讨论】:
谢谢,感谢您的回答,但我确实关心时间测量。如果有固定的采样间隔,你能解释一下为什么没有固定的时间吗?以上是关于“样本”在分析器中代表多少秒?的主要内容,如果未能解决你的问题,请参考以下文章