首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kcachegrind周期估计

Kcachegrind周期估计
EN

Stack Overflow用户
提问于 2016-07-11 23:51:16
回答 1查看 1.3K关注 0票数 5

在访问他们的github页面并从他们的kde文档站点上看到一些pdf手册后,我仍然感到困惑。假设测试代码中有以下两行:

代码语言:javascript
复制
double a1 {asinh(1 / ep)};                   // 5 instr.
double b1 {log((1 + sqrt(1 + ep*ep)) / ep)}; // 12 instr.

其中ep是一些可以预定义的值。注释是我的,在代码块中,通过使用反汇编程序运行调试器,然后耐心地点击“下一条指令”并进行计数。如果我将Kacachegrind设置为显示“指令获取”,则这些内容与Kacachegrind所说的一致。我想这应该是有意义的(顺便说一句,我是C++的初学者)。但是如果我切换到“周期估计”,我会得到一些非常奇怪的读数。对于当前的示例,它是115122,但其他看似相似的表达式,如:

代码语言:javascript
复制
double Ap {1.0};
double ep {0.9};

显示2222 (实例fetch显示两者的2 )!这是怎么回事?有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 00:16:39

我想我在点击了很多次并且习惯了Kcachegrind之后,我找到了答案。总的“周期估计”使用这个公式:

代码语言:javascript
复制
CEst = Ir + 10 L1m + 100 LLm

哪里

代码语言:javascript
复制
Ir  = Instruction Fetch
L1m = L1 Miss Sum
Llm = Last-level Miss Sum

因此,在我的示例中,CEst显示了2222,但都是2 Ir,第一个有2指令获取,没有未命中,而另一个有2指令获取,但每个都有两个未命中,即=>

代码语言:javascript
复制
2*Ir + 10*2*L1m + 100*2*Llm = 2 + 20 + 200 = 222

这在我尝试的所有代码中都是一致的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38311201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档