问题标签 [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.

0 投票
0 回答
47 浏览

c++ - Valgrind 忽略输出中的模板

valgrind [callgrind]用来分析 C++ 可执行文件,并KCachegrind显示结果。但是,由于实际方法名称之前的模板名称无穷无尽,因此函数名称几乎不可读。由于每个类都使用一个固定的模板值进行实例化,这纯粹是浪费。有没有办法获得 kind 的输出MyClass<...>::methodName(),用文字点代替模板?

0 投票
0 回答
53 浏览

linux - KCacheGrind 不会打开 callgrind 文件

我正在尝试使用 KCacheGrind 在 Linux(Ubuntu)上分析我的 c++ 可执行文件。KCacheGrind 似乎已正确安装,但是,当我尝试打开我的 callgrind 文件时会发生以下情况。

文本

我也安装了graphviz,但这似乎没有任何帮助。我一直在搜寻互联网,但找不到任何有用的东西,如果有人知道如何解决这个问题,我将非常感谢一些帮助。

附加信息:

  • ubuntu 版本 - 4.4.0-19041-Microsoft
  • valgrind 是最新版本
0 投票
1 回答
108 浏览

c++ - Boost 图:加速 add_edge

我有一个boost图形应用程序,我需要在其中调用函数 add_edge() [此处提供的文档]

分析此应用程序KCachegrind揭示了以下所用时间的分解:

在此处输入图像描述

可以看出,add_edge函数调用占用了父调用者大约 21% 的时间。在这 21% 中,14.49% 只是一些std::vector人的重新分配。

防止此类向量重新分配的建议方法似乎是预先reserve预留一些空间。参见例如线程:如何使用 std::vector 防止内存重新分配

在升压图中保留一些足够空间的等效方法是什么?

因此,对其进行重复调用的底层图形对象add_edge是:


编辑添加:这里这里的类似问题。

对我来说不幸的是,g.m_edges没有功能reserve


编辑以添加指向最小示例的链接(很难完全工作),但编译良好,除了不是主要问题的未定义外部引用。

0 投票
0 回答
50 浏览

profiling - Callgrind / kcachegrind 调用图输出意味着函数在不相互调用时相互调用

我正在使用 callgrind 分析 C++ 代码,然后在 kcachegrind 中对其进行可视化。

例如,如果我的程序是:

我希望 main() 有两条边,一条到 function1() 和由 function1() 调用的所有内容,以及一个到 function2() 和由 function2() 调用的所有内容。

相反,我得到的是 main() 对 function1() 有优势,而 function1() 又对 function2() 有优势。这对我来说似乎是错误的,有人可以详细说明这是为什么吗?

0 投票
1 回答
107 浏览

profiling - Callgrind / kcachegrind 为什么在 valgrind 中运行程序会增加 sysCall 时间?

我一直在分析一些可能在系统调用中花费大量执行时间的代码。手动和使用 callgrind 对某些函数计时,callgrind 报告的系统调用时间比简单地对函数计时(当然也包括 CPU 时间)长约 20、30 或 40 倍。

--collect-systime=ON 用于收集每个函数的此 sysCall 时间。

据我所知,callgrind 通过计算 CPU 指令和计时系统调用来工作,只是让操作系统完成工作并且不会干扰。我不明白为什么在使用 callgrind 进行分析时花费在 sysCalls 上的时间会增加,有人可以详细说明吗?

callgrind 仍然是分析在 sysCalls 中花费的时间的有用工具吗?

0 投票
0 回答
19 浏览

profiling - KCacheGrind/CallGrind - 错误的相对时间

我正在使用 valgrind 来分析程序。valgrind 测量显示错误的相对运行时间 - 从 callgrind 日志看来,function1 的运行时间比函数 2 长,尽管当我使用没有 valgrind 的简单计时器时,我看到相反的结果。对此有什么解释吗?我该怎么办?

0 投票
0 回答
25 浏览

linux - 使用 Kcachegrind 调试命令 bin/console 太慢

我最近有很多问题,例如:

快速修复通常是删除 php.ini 中使用的内存限制,例如:

但我认为我默认的256M应该足够了。这就是我启用分析器并运行简单的bin/console. 在终端中打印一些东西大约需要 8 秒,这很烦人。

在名为 Kcachegrind 的工具中,此分析文件的概述如下所示: kcachegrind

我不是 Symfony 控制台的专家,但 200 万次调用看起来太多了,对吧?

你有什么要测试的吗?

操作系统:Linux Mint 20.2 肉桂

0 投票
0 回答
3 浏览

python - 使用 cprofiler 进行时间报告

我编写了一个示例 python 代码并通过 cprofiler 对其进行了分析,并使用 kcachegrind 对其进行了可视化。

在此处输入图像描述

如您所见,给出了“每次调用的 ns”和“计数”,但总时间不是这两个参数的乘积。例如,16*2596 是 41,536,而“ns”列是 32.33。这种差异的根源是什么?