在分析器中,“样本”代表多少秒?

5
在Visual Studio Profiler中,有一个"采样"方法的性能分析选项,可以用于我的ASP.NET MVC应用程序:
引用如下:
Visual Studio Profiling Tools 的采样性能分析方法在设定的时间间隔内中断计算机处理器并收集函数调用堆栈。调用堆栈是一种动态结构,存储有关正在处理器上执行的函数的信息。
这使我可以大致了解哪些代码需要最长的执行时间。但是,我不确定每个采样值代表多长时间。3441是34.41秒吗?也许没有纯粹的转换成时间测量单位。如果是这样,请有人解释一下原因。文档声称有固定的时间间隔,但未详细说明每个间隔持续多长时间。
1个回答

4
在我的理想世界里,只要样本发生在关心的时间间隔内并且与程序状态不相关,个人例程或代码行的时间测量就无关紧要。
重要的是包容性百分比。
对于出现在堆栈样本中的每一行代码,它出现在样本中的百分比(在末尾或中间)是最重要的,因为如果可以删除该行代码,则可以节省的时间百分比就是它所占样本的百分比。
(此外,除非我错了,否则我不认为VS分析器会在I / O期间采样,这使其无法察觉不必要的I / O。)
回应您的评论:假设样本率为100/秒和10/秒,总时间为10秒,则样本数量为1000和100。 如果一行代码在20%的堆栈样本中,则无论采样率如何,将其删除都将节省10秒的20%,即2秒钟。 这就是为什么样本率无关紧要的原因。

谢谢,我很感谢您的回答,但我确实关心时间测量。如果有采样的固定间隔,您能解释一下为什么不会有固定的时间吗? - stevebot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接