C++ 如何解释kcachegrind的结果
谁能告诉我如何对kcachegrind的结果感兴趣 我有两个版本的代码(v1,v2),都是在调试模式下编译的。我在valgrind中运行了以下选项:C++ 如何解释kcachegrind的结果,c++,profiling,valgrind,kcachegrind,callgrind,C++,Profiling,Valgrind,Kcachegrind,Callgrind,谁能告诉我如何对kcachegrind的结果感兴趣 我有两个版本的代码(v1,v2),都是在调试模式下编译的。我在valgrind中运行了以下选项: valgrind--tool=callgrind-v.. 由此生成的输出文件在kcachegrind中打开。现在我已经发现代码的v2版本比第一个版本运行得更快,v1本来就是这样。但是我如何从kcachegrind的调用图输入结果呢 在kcachegrind所有呼叫者选项卡中,我有以下列:包括距离、呼叫、呼叫者 IIUC、Called和caller是
valgrind--tool=callgrind-v..
由此生成的输出文件在kcachegrind中打开。现在我已经发现代码的v2版本比第一个版本运行得更快,v1本来就是这样。但是我如何从kcachegrind的调用图输入结果呢
在kcachegrind所有呼叫者
选项卡中,我有以下列:包括距离、呼叫、呼叫者
IIUC、Called
和caller
是程序中调用“调用者”的次数。但是我不知道其他人
另一件事是当选择一个特定的函数,然后
“呼叫者”选项卡显示了更多信息<代码>Ir,每次呼叫的Ir,计数,呼叫方
在“类型”选项卡中:`EventType,包括Self、short和Formula
我不知道这里
到目前为止,我已经阅读了以下问题:
我使用QCacheGrind,因此如果屏幕上的内容与您看到的不完全相同,我深表歉意。据我所知,QCacheGrind是KCacheGrind的一个直接Qt端口。此外,我还能够在指令计数和指令总数的%之间切换。为了保持一致性,我将参考任何可以通过这种方式切换的列上的指令计数视图 “所有呼叫者”选项卡列应表示以下内容:
- include:此函数作为一个整体生成的指令数,由每个调用方分解。因为调用方是层次结构(因此是距离列),所以如果调用堆栈很深,则可能有几个调用方具有相同的值
- 距离:所选行与平面配置文件面板中所选函数的间隔函数调用数
- Called(调用方调用函数并最终导致执行所选函数的时间)
- 调用者:直接调用或调用所选函数的另一个调用者的函数(由距离决定)
- Ir:被此调用方调用后所选函数执行的指令总数
- Ir per call:每次调用执行的指令数
- 计数:调用方调用所选函数的次数
- 调用者:直接调用所选函数的函数
- include:再次说明此函数执行的全部指令及其下调用的所有函数
- Self:该函数专门执行的指令。此计数器仅跟踪此函数使用的指令,而不跟踪此函数调用的函数使用的任何指令
- Short和Formula:定义自定义事件类型时使用这些列。除非您最终定义了自己的类型,否则您的类型应该是空的或非常短的(如CEst=Ir)