问题标签 [kcachegrind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 需要帮助了解 kcachegrind
我试图了解kcachegrind,那里似乎没有太多信息,例如,在左侧窗口中,什么是“Self”,什么是“incl.”?(见1 个核心)。
我做了一些弱扩展测试,没有通信,所以我猜这与缓存未命中有关。但据我所见,1 核和 16 核的数据未命中数相同,请参阅:16 cores。
我可以看到 1 核和 16 核之间的唯一区别是,在 16 核上调用 memcpy 的次数要少得多(我可以解释)。但我仍然无法弄清楚为什么在一个核心上,执行时间是 0.62 秒,而在 16 个核心上,执行时间更接近 1 秒。每个处理器都在做相同数量的工作。如果有人能告诉我在 kcachegrind 中寻找什么,那就太棒了,这是我第一次使用 kcachegrind 和 valgrind。
编辑:我的代码以压缩行格式连接矩阵。它涉及循环子矩阵的条目并使用 memcpy 将值复制到结果矩阵中。这是代码: - 我不能发布超过 2 个链接......所以我会在评论中发布它。
我只在循环本身上启动了 valgrind,循环也是 0.62 秒执行时间和 1 秒执行时间之间的差异。花费最多时间的部分是对 memcpy 的调用(下面 github gist 中的第 37 行),当我将其注释掉时,我的代码执行时间不到 0.2 秒,尽管 1 到 16 个内核之间仍然有增加(大约增加 30%)。
我在一个包含 24 个内核的 haswell 节点上运行我的代码(两个英特尔® 至强® 处理器 E5-2690 v3)
每个核心有 5GB 内存。
kcachegrind - 如何回到 kcachegrind 的起点?
有时我运行 kcachegrind,点击一下,点击关闭左侧面板的小“x”(哎呀!不知道如何取回它),再点击一下,完全迷路,然后退出 kcachegrind。
然后我稍后在同一个输入文件上再次重新运行 kcachegrind,希望重新开始,但相反,kcachegrind “有用”地记住了我所处的破碎状态并将我放回那里,即完全丢失并且缺少我拥有的面板不知道怎么回去。
我该如何恢复?
- Hitting Up,Up,Up... 并不能帮助我找到节点“main”,因为我在一个循环中,而 main 甚至不在当前调用图中,因为我在一个线程中。
- 文件-> 重新加载没有帮助。
- View->Layout-> Restore To Default 没有帮助。
- 重命名输入文件没有帮助。
- 删除并重新安装 kcachegrind 没有帮助。
我如何回到起点?即默认布局,默认节点,其他一切默认。
我在 ubuntu 14.04 上使用 KCachegrind 版本 0.7.4kde。
c++ - C++ 分析揭示了矢量热点。如何优化?
我正在使用 callgrind/qcachegrind 分析一些信号处理代码,其中涉及许多操作std::vector<float>
。
我从 Mac OS 的内置nearbyint
函数中得到了一个相当严重的热点。
这似乎几乎完全由这个向量函数调用。
这又是从我的许多类成员函数中调用的。对我来说,这_push_back_slow_path
看起来像是一些分配瓶颈,但我不完全确定为什么。在运行循环中,我没有改变向量的大小。所有正在发生的事情,偶尔会通过引用复制它们,迭代,或者data()
操作用于获取 vDSP 操作的原始指针。例如 。. .
vector
当我将原始数据指针传递给 vDSP 函数时,为什么它是这个热点的罪魁祸首?- 这个热点的可能罪魁祸首是什么?
- 为什么会
basic_string
出现?已分析的库不使用字符串。 std::array
尽可能切换到是明智的下一步行动吗?
随时询问更多信息,我很乐意编辑问题。
编辑 1
作为对第一个答案的回应,我没有明确地push_back
在任何地方打电话。热点出现在看似疯狂的地方,例如浮动上的内联日志操作。这可能是编译器优化做奇怪的事情吗?
c++ - Kcachegrind 周期估计
在访问他们的 github 页面并从他们的 kde 文档站点看到一些 pdf 手册后,我仍然感到困惑。假设测试代码中有这两行:
其中ep
是一些可以预定义的值。注释是我的,在 Codeblocks 中,通过使用反汇编程序运行调试器,然后耐心地点击“下一条指令”并计数来完成。如果我将其设置为显示“指令获取”,这些与 Kacachegrind 所说的相对应。我想这应该是有道理的(我是 C++ 的初学者,顺便说一句)。但是如果我切换到“周期估计”,我会得到一些非常奇怪的读数。对于当前示例,它是115
and 122
,但其他看似相似的表达式,例如:
显示222
和2
(instr. fetch 显示2
两者)!这里发生了什么?有人可以解释一下吗?
macos - qcachegrind“平面轮廓”停靠面板消失了。如何恢复?
我通过 brew 在 OS X 上安装了 qcachegrind。没问题。我生成了一些 *.callgrind 文件并使用 qcachegrind 查看它们。再次,没问题。在查看一个文件时,我不小心关闭了“平面配置文件”停靠面板。现在,每当我打开 qcachegrind 时,该面板都会丢失。
我试图lsof
找出 qcachegrind 从哪里得到它的偏好,但这并没有帮助。我从中删除了一个~/Library/Preferences/io.github.qcachegrind.plist
似乎存储窗口位置数据的文件,但这仍然没有解决问题。此屏幕截图说明了问题;另请注意,也没有可下拉的菜单。
其他人针对 kcachegrind 发布了类似的查询,在这里得到了回答:我如何回到 kcachegrind 的开头?
但是,该解决方案不适用于 OSX。
任何人都知道需要修改或删除哪些文件以恢复 qcachegrind 的默认窗口行为和位置?
php - QCachegrind 没有显示任何用于 php 分析的数据,可能是配置问题
我已经安装了 xdebug 和 qCachegrind,这是 KCachegrind 的 windows 版本。但在这个界面上看不到任何分析数据。
可能是我无法正确配置它。
让我告诉你,我已经安装了 Xdebug,我正在 webgrind 上查看它。
在这里,我发布了 xdebug 的 ini 设置:
有人请在这里帮助我,以前使用过它,在互联网上找不到太多帮助。
php - KCacheGrind 中的闭包是什么?
closure
in是什么意思KCacheGrind
?我有它与我的功能之一,它指出了spl_autoload_register()
功能,spl_autoload_call
在KCacheGrind
. 而且self
函数的时间是60+,所以当然要优化,但是不知道从哪里下手。
closure
里面是什么KCacheGrind
?
我需要什么来优化上述功能以减少self
时间?
profiling - kcachegrind 无法打开 callgrind 文件
我正在使用 callgrind 来分析一小段代码。Callgrind 输出文件生成良好,它们的内容看起来不错,但我无法使用 kcachegrind 打开它们:我收到以下错误消息:
无法打开文件“callgrind.out.4953”。检查它是否存在并且您有足够的权限来阅读它。
我对它们所在的文件和目录拥有所有权限,但有同样的问题。此外,它还可以与同一工作区中的其他文件夹中的其他项目一起使用。我还指出,在这两种情况下,进程都会正确终止。
arm - valgrind 不适用于我在 linux ubuntu 16.04 中的 32 位可执行文件
我正在尝试在我的 32 位可执行文件(示例)上运行 valgrind 工具,我在 linux Ubuntu 主机 16.04(64 位)下构建,但它无法运行,错误:错误 ELF。
示例应用程序构建为在 arm32 中运行,在我的主机 linux 机器中交叉编译。
这是我运行的命令。
我运行了 memcheck 工具,但也失败了。
然后我做了什么,我导出了 valgrind lib 路径,但这没有帮助+
我只是我的 lib 目录,我找到了整个列表并找到了 callgrind,所有的库都在那里。
不知道出了什么问题以及如何在我的可执行文件上使用 valgrind。
任何帮助,不胜感激。