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

0 投票
2 回答
1289 浏览

c++ - 用于 C++ 分析的非常困倦和 Callgrind 之间的区别

我正在尝试了解非常昏昏欲睡Callgrind进行分析的区别。我打算分析的代码是用 C++ 编写的,可以在 Linux 和 Windows 下运行。

在 Linux 上,我能够使用 Callgrind 来查看 Self 和 inclusive 的相对成本。据我了解,Callgrind 使用仪器化分析技术并且需要相当长的时间。但是,Very Sleepy 使用统计分析并且非常快。由于两者都使用不同的分析方法,我无法比较两者的结果。

有没有办法可以在 Linux 和 Windows 上进行某种配置文件比较?不幸的是,Callgrind 对于 Windows 不可用,反之亦然,对于非常困倦。

0 投票
0 回答
939 浏览

c++ - Callgrind(Valgrind 分析器)不输出有用的结果

我编写了一些结构如下的 C++ 代码:

我尝试使用以下命令使用 callgrind 对其进行分析:

我得到以下输出:

除了 main(),它不显示源代码的哪些部分占用了大部分时间。我知道大部分时间都花在了 optimize() 函数中,而大部分时间都花在了 kernel() 函数中,但我从输出中看不到这一点。如何获取详细信息以便加快代码速度?

如果有帮助,我将在代码中广泛使用 std::vectors。前段时间我使用数组实现了一个类似的代码,那时 callgrind 似乎工作得很好。这可能是一个问题吗?

如果我禁用 O3 标志,我会得到以下输出:

这比之前的输出有更多的信息,但仍然存在两个问题:第一,未优化代码上的输出并不能帮助我使优化后的代码更快。第二,大部分时间(~50%)被 libc 函数占用,我没有直接在我的代码中使用这些函数。我如何知道代码的哪些部分映射到这些调用?

0 投票
0 回答
108 浏览

optimization - Valgrind 和 time 给出相反的结果

我有一些(Fortran)代码将数据累积到一个数组中,基本上是这样做的:

使用 callgrind,我了解到我的程序的大部分工作是执行该行

所以我对我是否可以做任何事情来加速这一点很感兴趣。作为一个起点,我尝试使用为我的系统优化的 BLAS 库,并将这一行替换为

Callgrind 报告称,这将整个程序的“Ir 计数”减少了约 40%。但是,以“时间”衡量的执行时间增加了大约 20%。

我预计运行时间应该与执行的指令数量大致成正比,因此这两个度量应该给出可比较的结果(时间报告 99% 的 CPU 使用率)。我在这里想念什么?

0 投票
0 回答
594 浏览

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::) 之外基本相同。

0 投票
0 回答
185 浏览

profiling - callgrind 是否能够在调用图中包含内核函数?

我正在寻找一种工具,它可以为应用程序生成调用图并包含内核函数。更具体地说,我很想知道一个函数被调用了多少次。有没有办法用callgrind做到这一点?或者有什么其他建议?

0 投票
2 回答
4282 浏览

valgrind - 特定文件中的 callgrind 输出

我想将 callgrind 的输出重定向到文件名call_grind.txt,但是当我尝试这样做时,会生成一个文件,但该文件内没有输出。

例如:

另外,我的系统中没有任何callgrind.out.<pid>文件通常应该位于它的位置。

根据我的理解,如果我运行以下命令,它应该创建callgrind.out.<pid> file

那么,如何使用该工具以及如何读取输出文件?

0 投票
0 回答
123 浏览

c++ - Callgrind 函数指令计数的高端

我正在使用 callgrind 来分析一段代码,我注意到在函数结束后计算了大量指令。这是有问题的输出

这是整个函数的代码。它只是 Edmonds–Karp 算法的一个实现。

如果我正确解释了输出,那么在方法结束后大约有 20 亿条指令正在执行。这些是什么以及如何减少它们?通常,“全局构造函数键入...”行是什么意思?

0 投票
0 回答
1401 浏览

c++ - 在 linux 中逐行分析 C++ 程序,并能够集成到 eclipse 中?

我们有一个项目,我们正在测试其中涉及大量数学(包括线性代数、大规模矩阵操作、稀疏矩阵、openblas、犰狳库等)

我问这个问题是因为所有相关的都非常老。但是如何逐行分析我的项目,以便找到瓶颈并找到缓解瓶颈的方法?有什么新的工具吗?如果该工具可以与 Linux 上的 Eclipse 集成,我也会喜欢它。

0 投票
1 回答
387 浏览

profiling - callgrind 分析是否受其他进程的影响?

我想使用 callgrind 分析我的应用程序。现在,由于这需要很长时间,同时我在同一台机器上继续进行网络浏览、编译和其他密集任务。

我是否偏向分析结果?我期待,由于 valgrind 使用模拟 CPU,其他外部进程不应干扰 valgrind 的执行。我对吗?

0 投票
1 回答
188 浏览

c - Callgrind Anotate 在 OS X 10.10 中不起作用

我想问你一些问题什么是不正确的,

我用 C 写了一个程序并翻译成

并运行

创建callgrind.out.[pid-number] 如果我运行

出来会


-- 用户注释来源:main.c


没有为 main.c 收集信息

有什么方法可以注释程序优化工具的代码和函数调用吗?

笔记

无法正常工作,因为 Apple 不支持 gcc 和 gprof 上的调试选项也不支持。而且KDE程序不想在Mac上运行...感谢大家提供有用的信息如何解决它