1

我有一个用 C++ 编写的高度并行化的程序,我正在努力加快它的速度。在进行了看起来很明显的修改之后,我想分析代码以查看时间花在了哪里以及我应该专注于优化的地方。但是,我遇到了一些问题,因为我似乎无法找到分析代码的好方法。

本来想用OProfile的,但是好像这台机器上没有安装内核源代码,而且内核太旧,没有构建支持分析。然后我研究了使用 gprof,但了解到它不能很好地处理多线程代码。我终于选择了 gperftools,它运行良好,但由于它对堆栈帧进行采样,似乎只给了我函数级有关我的代码时间使用情况的信息。我可以看到我超过 50% 的时间(或采样时间)都花在了一个函数上。但是,我想进一步深入了解该函数/指令的哪个区域占用了大部分时间。但是,我似乎无法弄清楚如何让 gperftools 提供这些信息,而且我不知道其他分析工具会(我可以在没有 root 权限的情况下使用/安装)。任何建议将不胜感激。

4

2 回答 2

2

Allinea MAP会在这里得到你的答案,它对 C++ 多线程代码进行行级和函数级分析,并且可以作为非特权用户安装和使用。

于 2015-02-06T10:49:36.927 回答
0

在我看来,在多线程方面没有什么可以与Intel Parallel Studio相提并论的。它在 Linux 上是惊人的免费。唯一不好的“功能”——它非常大。

于 2013-06-16T15:11:10.327 回答