问题标签 [gprof]

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 投票
1 回答
1355 浏览

c++ - 与教授进行绩效测量

prof有没有办法以与程序相同的方式运行 linux -gprof?我知道不会是准确的,但只是在统计上是正确的。

我基本上是在寻找一种方法来对gprof包含调试符号的 C/C++ 程序进行类似分析,但无需重新编译它。

0 投票
2 回答
300 浏览

c++ - 使用 OpenGL 的 C++ 性能怪异

我正在用 C++ 重写一些渲染 C 代码。旧的 C 代码基本上计算它需要的所有内容并在每一帧渲染它。新的 C++ 代码改为预先计算它需要的内容并将其存储为链表。

现在,实际的渲染操作是翻译、颜色更改和对 GL 列表的调用。

虽然执行链表中的操作应该非常简单,但结果方法调用似乎比旧版本花费的时间更长(每次都会计算所有内容 - 我当然确保新版本不会重新计算)。

奇怪的事?它执行的 OpenGL 操作比旧版本少。但它变得更奇怪了。当我为每种类型的操作添加计数器,并在方法结束时添加一个很好的旧 printf 时,它变得更快- gprof 和手动测量都证实了这一点。

我还费心看一下 G++ 在两种情况下(有和没有跟踪)生成的汇编代码,并且没有重大变化(这是我最初的怀疑) - 唯一的区别是为计数器分配了更多的堆栈字,增加所述计数器,并准备 printf 然后跳转到它。

同样,这对 -O2 和 -O3 都适用。我在 Ubuntu Maverick 上使用 gcc 4.4.5 和 gprof 2.20.51。

我想我的问题是:发生了什么?我究竟做错了什么?有什么东西让我的测量结果和 gprof 都丢了?

0 投票
2 回答
693 浏览

python - 使用 gprof2dot.py 缩短分析结果中的函数名称

我通常使用 gprof + gprof2dot.py 来分析 C++ 代码。我正在使用的新代码使用非常长的函数名称,因此 gprof2dot.py 的图形结果一团糟。我想知道如何缩短函数名称以便它们适合一个小盒子。

0 投票
2 回答
5685 浏览

c++ - gprof 与 cachegrind 配置文件

在尝试优化代码时,我对kcachegrdind和生成的配置文件的差异感到有些困惑gprof。具体来说,如果我使用 gprof(使用-pgswitch 编译等),我有这个:

这似乎表明我不需要费心去寻找任何地方,但::R_impl(...)

同时,如果我在没有-pg开关的情况下编译并运行valgrind --tool=callgrind ./a.out,我有一些相当不同的东西:这是kcachegrind输出的屏幕截图

在此处输入图像描述

如果我正确地解释了这一点,这似乎表明::R_impl(...)只需要大约 50% 的时间,而另一半则用于线性代数(Wrat(...)eigenvalues底层的 lapack 调用),这在配置文件的下方gprof

我理解这一点gprofcachegrind使用不同的技术,如果他们的结果有些不同,我不会打扰。但是在这里,它看起来非常不同,我不知道如何解释这些。有什么想法或建议吗?

0 投票
2 回答
8030 浏览

c++ - 哪个是最可靠的分析工具 gprof 或 kcachegrind?

使用两者分析一些 C++ 数字运算代码,gprofkcachegrind为对执行时间贡献最大的函数(50-80% 取决于输入)给出相似的结果,但对于 10-30% 之间的函数,这两个工具给出不同的结果。这是否意味着其中之一不可靠?你会在这里做什么?

0 投票
5 回答
3303 浏览

c++ - 向量使用权

我使用 gprof 和报告分析了我的代码,如果不是全部,前 20 名左右的大部分内容都与向量有关

这是一个好兆头,因为这意味着我的其余函数非常有效,或者从 vector< bool > 访问值真的很慢?

我正在用 gcc -std=c++0x 编译

0 投票
5 回答
5486 浏览

c++ - _Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register 是什么?

_Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register 是什么?在我的 gprof 报告中,我将他们列为我的顶级处理器时间用户。谷歌只返回链接给抱怨这两个错误的人。

这是我报告中唯一有时间的部分!= 0:

我正在运行 Windows 7 x64,并使用代码块 10.05 gcc 进行编译

编辑:

在启用强制程序运行 64 秒的功能后,它现在看起来像:

0 投票
2 回答
289 浏览

c++ - 我的程序配置文件中最重要的项目是 _Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register,这是一件好事吗?

作为对这个问题的跟进,我的前两件事仍然是异常处理程序是一件好事吗?一方面,它做了很多例外。另一方面,这是在 sdl 中,这意味着它可能尽可能优化,这意味着我的其他功能非常快。所以...

这是运行大约 64 秒后程序配置文件的顶部,在我做了一些优化之后

cast128 运行了 100000 次,这就解释了为什么它在顶部

0 投票
4 回答
551 浏览

linux - 在 Linux 中分析部分程序

我有一个程序花费大量时间加载和保存数据。现在我想知道每个函数在总运行时间的百分比方面花费了多少时间。但是,我想从分析器考虑的总时间中排除加载和保存函数所花费的时间。有没有办法使用 gprof 或任何其他流行的分析器来做到这一点?

0 投票
3 回答
2735 浏览

c - 从 gprof 结果中排除函数

我想从 gprof 生成的输出中排除一些函数。换句话说,我不希望在计算每个函数在执行期间花费的时间百分比时将它们包括在内。我在一处读到-E选项可以使用。

但是我正在使用gprof -E function_to_be_exluded my_program_name,但没​​有任何反应。手册说它已折旧,您应该改用symspecs。但是,我浪费了半个小时试图弄清楚如何使用symspecs来实现它,但没有运气。任何人都可以在这方面帮助我。