标签: c++ linux performance profiler
我正在尝试分析代码的运行时和启动时间。到目前为止,我已经使用了perf和uftrace来查找运行时问题,并且在运行时发现了很多问题,但是我还想了解更多有关初始化的信息,并且知道我在哪里浪费了时间。我尝试使用LD_DEBUG=statistics来获取有关动态加载的库的更多信息,但是我没有发现任何与众不同的地方,这是有道理的,因为我将所有库静态链接到可执行文件。
LD_DEBUG=statistics
是否可以测量初始化静态变量/全局变量以及流到达main()之前发生的所有事情所需的时间?
main()
答案 0 :(得分:1)
perf适用于初始化内容。
perf
我尝试过该程序:
struct BeforeInit { volatile int sink; BeforeInit() { for (int i = 0; i < 1000000000; i++) { sink = i; } } }; BeforeInit global; int main() { return 0; }
perf record和perf report表示此功能的大部分开销:
perf record
perf report