5

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

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

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

4

1 回答 1

4

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

重要的是包容百分比。

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

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

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

于 2013-09-28T00:32:47.900 回答