问题标签 [callgrind]
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++ - Callgrind(Valgrind 分析器)不输出有用的结果
我编写了一些结构如下的 C++ 代码:
我尝试使用以下命令使用 callgrind 对其进行分析:
我得到以下输出:
除了 main(),它不显示源代码的哪些部分占用了大部分时间。我知道大部分时间都花在了 optimize() 函数中,而大部分时间都花在了 kernel() 函数中,但我从输出中看不到这一点。如何获取详细信息以便加快代码速度?
如果有帮助,我将在代码中广泛使用 std::vectors。前段时间我使用数组实现了一个类似的代码,那时 callgrind 似乎工作得很好。这可能是一个问题吗?
如果我禁用 O3 标志,我会得到以下输出:
这比之前的输出有更多的信息,但仍然存在两个问题:第一,未优化代码上的输出并不能帮助我使优化后的代码更快。第二,大部分时间(~50%)被 libc 函数占用,我没有直接在我的代码中使用这些函数。我如何知道代码的哪些部分映射到这些调用?
optimization - Valgrind 和 time 给出相反的结果
我有一些(Fortran)代码将数据累积到一个数组中,基本上是这样做的:
使用 callgrind,我了解到我的程序的大部分工作是执行该行
所以我对我是否可以做任何事情来加速这一点很感兴趣。作为一个起点,我尝试使用为我的系统优化的 BLAS 库,并将这一行替换为
Callgrind 报告称,这将整个程序的“Ir 计数”减少了约 40%。但是,以“时间”衡量的执行时间增加了大约 20%。
我预计运行时间应该与执行的指令数量大致成正比,因此这两个度量应该给出可比较的结果(时间报告 99% 的 CPU 使用率)。我在这里想念什么?
c++ - Valgrind callgrind 使用 C++ 正则表达式非常慢
我有一个严格使用 Boost 进行正则表达式的应用程序。我升级到 g++4.9 并将部分但不是全部代码切换到使用内置的正则表达式函数(直接更改)。切换后,我尝试使用 valgrind 的 --callgrind 功能来分析应用程序。但它非常慢。尽管它与我的应用程序相关,但它从每秒大约 30 次迭代变为每秒不到 1 次。我已经在有/没有运行 valgrind 的情况下进行了测试,以确保它不是应用程序本身。我还测试了 Boost 实现并且没有问题。
我已经用 valgrind 3.10.0 和 3.10.1 进行了测试,它们都表现出相同的行为。
编辑: 我替换的功能的简化版本。由于 Boost 和 C++ 语法的相似性,这两个函数除了命名空间(Boost:: v. std::) 之外基本相同。
profiling - callgrind 是否能够在调用图中包含内核函数?
我正在寻找一种工具,它可以为应用程序生成调用图并包含内核函数。更具体地说,我很想知道一个函数被调用了多少次。有没有办法用callgrind做到这一点?或者有什么其他建议?
valgrind - 特定文件中的 callgrind 输出
我想将 callgrind 的输出重定向到文件名call_grind.txt
,但是当我尝试这样做时,会生成一个文件,但该文件内没有输出。
例如:
另外,我的系统中没有任何callgrind.out.<pid>
文件通常应该位于它的位置。
根据我的理解,如果我运行以下命令,它应该创建callgrind.out.<pid> file
:
那么,如何使用该工具以及如何读取输出文件?
c++ - Callgrind 函数指令计数的高端
我正在使用 callgrind 来分析一段代码,我注意到在函数结束后计算了大量指令。这是有问题的输出
这是整个函数的代码。它只是 Edmonds–Karp 算法的一个实现。
如果我正确解释了输出,那么在方法结束后大约有 20 亿条指令正在执行。这些是什么以及如何减少它们?通常,“全局构造函数键入...”行是什么意思?
c++ - 在 linux 中逐行分析 C++ 程序,并能够集成到 eclipse 中?
我们有一个项目,我们正在测试其中涉及大量数学(包括线性代数、大规模矩阵操作、稀疏矩阵、openblas、犰狳库等)
我问这个问题是因为所有相关的都非常老。但是如何逐行分析我的项目,以便找到瓶颈并找到缓解瓶颈的方法?有什么新的工具吗?如果该工具可以与 Linux 上的 Eclipse 集成,我也会喜欢它。
profiling - callgrind 分析是否受其他进程的影响?
我想使用 callgrind 分析我的应用程序。现在,由于这需要很长时间,同时我在同一台机器上继续进行网络浏览、编译和其他密集任务。
我是否偏向分析结果?我期待,由于 valgrind 使用模拟 CPU,其他外部进程不应干扰 valgrind 的执行。我对吗?
c - Callgrind Anotate 在 OS X 10.10 中不起作用
我想问你一些问题什么是不正确的,
我用 C 写了一个程序并翻译成
并运行
创建callgrind.out.[pid-number] 如果我运行
出来会
-- 用户注释来源:main.c
没有为 main.c 收集信息
有什么方法可以注释程序优化工具的代码和函数调用吗?
笔记
无法正常工作,因为 Apple 不支持 gcc 和 gprof 上的调试选项也不支持。而且KDE程序不想在Mac上运行...感谢大家提供有用的信息如何解决它