我已经开始Kcachegrind用于性能分析.但我不明白GUI和输出图.
例如,此调用图
SignatureIterator::iterate_parameters()我不明白9.25%指的是什么?5 198x意味着多少次SignatureIterator::iterate_parameters()叫 SignatureIterator::parse_type()?100%in是什么意思Symbol::byte_at(int) const?什么是ELF Object?
注意:在官方文档http://kcachegrind.sourceforge.net/html/CallGraph.html中,但仍然不明白是什么the caller distance to the function?
小智 10
KCachegrind中的所有可视化都围绕当前选定的函数,即Symbol::byte_at()此处.通常,所选功能的百分比数量与总成本(运行时间/周期)相关地显示.但是,如果启用模式/工具按钮"相对于父级",则调用图中的百分比数字会"缩小"以显示所选功能的100%,以便更容易查看其他功能所花费的成本比率,相对于选定的一个.
让我们假设成本(即在KCachegrind中选择的事件类型)是时间(以CPU周期或毫秒为单位 - 与百分比无关).这使得它可能更容易理解.
调用图中的百分比总是显示在所选函数(Symbol::byte_at)处于活动状态时在某个给定函数中花费的时间,即.在程序运行期间,可以在调用堆栈上找到这两个函数的时间.这适用于被叫方向(向下Symbol::byte_at())和呼叫方向(向上Symbol::byte_at()).
向下,这更容易理解:虽然Symbol::byte_at()处于活动状态,但处理器实际执行代码的时间占24.14%Symbol::base().另一次(100% - 24.14%),代码Symbol::byte_at()本身正在运行.
向上选择的功能,可能有点棘手.例如,9.25%SignatureIterator::iterate_parameters()表示在该时间段内Symbol::byte_at()处于活动状态时,9.25%的时间是间接调用的SignatureIterator::iterate_parameters().同样,它Symbol::byte_at()被称为11.27%的直接运行时间SignatureIterator::parse_type().也就是说,在所选函数的上方,函数的直接父项中的百分比总是加起来该函数的确切百分比,除非由于低于可见性阈值而从可视化中删除了一个函数(请参阅上下文菜单).
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |