"样本"在探查器中表示多少秒?

ste*_*bot 5 c# asp.net asp.net-mvc profiling visual-studio

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

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

这使我能够粗略地指出执行时间最长的代码.但是,我不确定每个样本值代表多少时间.是3,441 34.41秒?也许没有纯粹的转换为时间测量.如果是这样,有人可以解释原因吗?文档声称有设定的间隔,但没有详细说明每个间隔持续多长时间.

Mik*_*vey 4

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

重要的是包含百分比。

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

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

回应您的评论:假设样本为 100/秒 vs. 10/秒,总时间为 10 秒,因此样本数为 1000 vs. 100。如果一行代码位于堆栈样本的 20% 上,然后删除它会节省 10 秒的 20%,即 2 秒,无论采样率如何。这就是为什么采样率并不重要。