我正在尝试分析我的代码运行时间和启动时间。到目前为止,我已经使用 perf 和 uftrace 来查找运行时问题,并且在运行时检测到很多问题,但我还想了解更多关于初始化的信息,并知道我在哪里浪费了时间。我尝试使用 LD_DEBUG=statistics
来获取有关动态加载库的更多信息,但我没有发现任何异常情况,这很有意义,因为我将所有库都与可执行文件静态链接.
是否可以测量初始化静态/全局变量以及在流到达 main()
之前发生的所有事情需要多长时间?
最佳答案
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
显示了这个函数的大部分开销:
关于c++ - 如何分析静态/全局初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56828733/