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