问题标签 [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++ - Valgrind 忽略输出中的模板
我valgrind [callgrind]
用来分析 C++ 可执行文件,并KCachegrind
显示结果。但是,由于实际方法名称之前的模板名称无穷无尽,因此函数名称几乎不可读。由于每个类都使用一个固定的模板值进行实例化,这纯粹是浪费。有没有办法获得 kind 的输出MyClass<...>::methodName()
,用文字点代替模板?
linux - KCacheGrind 不会打开 callgrind 文件
我正在尝试使用 KCacheGrind 在 Linux(Ubuntu)上分析我的 c++ 可执行文件。KCacheGrind 似乎已正确安装,但是,当我尝试打开我的 callgrind 文件时会发生以下情况。
我也安装了graphviz,但这似乎没有任何帮助。我一直在搜寻互联网,但找不到任何有用的东西,如果有人知道如何解决这个问题,我将非常感谢一些帮助。
附加信息:
- ubuntu 版本 - 4.4.0-19041-Microsoft
- valgrind 是最新版本
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
。
编辑以添加指向最小示例的链接(很难完全工作),但编译良好,除了不是主要问题的未定义外部引用。
profiling - Callgrind / kcachegrind 调用图输出意味着函数在不相互调用时相互调用
我正在使用 callgrind 分析 C++ 代码,然后在 kcachegrind 中对其进行可视化。
例如,如果我的程序是:
我希望 main() 有两条边,一条到 function1() 和由 function1() 调用的所有内容,以及一个到 function2() 和由 function2() 调用的所有内容。
相反,我得到的是 main() 对 function1() 有优势,而 function1() 又对 function2() 有优势。这对我来说似乎是错误的,有人可以详细说明这是为什么吗?
profiling - Callgrind / kcachegrind 为什么在 valgrind 中运行程序会增加 sysCall 时间?
我一直在分析一些可能在系统调用中花费大量执行时间的代码。手动和使用 callgrind 对某些函数计时,callgrind 报告的系统调用时间比简单地对函数计时(当然也包括 CPU 时间)长约 20、30 或 40 倍。
--collect-systime=ON 用于收集每个函数的此 sysCall 时间。
据我所知,callgrind 通过计算 CPU 指令和计时系统调用来工作,只是让操作系统完成工作并且不会干扰。我不明白为什么在使用 callgrind 进行分析时花费在 sysCalls 上的时间会增加,有人可以详细说明吗?
callgrind 仍然是分析在 sysCalls 中花费的时间的有用工具吗?
profiling - KCacheGrind/CallGrind - 错误的相对时间
我正在使用 valgrind 来分析程序。valgrind 测量显示错误的相对运行时间 - 从 callgrind 日志看来,function1 的运行时间比函数 2 长,尽管当我使用没有 valgrind 的简单计时器时,我看到相反的结果。对此有什么解释吗?我该怎么办?