美文网首页js css html
第二章 性能瓶颈的分析与定位(3) 采样型剖析器

第二章 性能瓶颈的分析与定位(3) 采样型剖析器

作者: 耕田者 | 来源:发表于2022-07-19 21:50 被阅读0次

采样型剖析器

        采样型剖析器通过周期性地抓取程序当前调用栈的快照,以及检查当前调用的函数的方式来检查程序状态。这里的思想是被采样最多的函数即是占用程序执行时间最多的函数。在一个时间较长的运行过程中,被采样最多的函数可以推定执行时间最多的函数,从而可以得到最常被执行函数的大致图像。

        这类剖析器的第一个缺点是显而易见的——即它的统计本质。对不常使用的函数的采样结果可能是不精确的;函数有可能被漏采样,当剖析器运行过快时也有可能被误采样。第二个缺点更加微妙——对系统中每个函数一视同仁的数据采样方式会导致数据泛滥,而我们知道,通常只有小部分的代码于性能息息相关。

       虽然这类剖析器的缺陷显而易见,但它们本质上是一种非侵入式的检测技术。由于它们独立于构建工具链,这类剖析器非常易于使用并且在目前的软件开发中被广泛使用。这类剖析器包括Visual Studio profiler, Very Sleepy, 及Luke Stackwalker等等,不一而足。有些年头的gprof也可以看作是一种检测式和采样式混合型剖析器。

       实际情况下,你可能需要同时使用两种剖析器:在剖析构建或了解大概的整体情况时使用手动检测型剖析器,而在调查具体问题时,使用采样型剖析器获取进一步的细节数据。

相关文章

网友评论

    本文标题:第二章 性能瓶颈的分析与定位(3) 采样型剖析器

    本文链接:https://www.haomeiwen.com/subject/hcuyirtx.html