c++ - 如何分析静态/全局初始化?

标签 c++ linux performance profiler

我正在尝试分析我的代码运行时间和启动时间。到目前为止,我已经使用 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 recordperf report 显示了这个函数的大部分开销:

enter image description here

关于c++ - 如何分析静态/全局初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56828733/

相关文章:

java - Netbeans(用于 c/c++ 的 MinGW 编译器)可以调用任意 C/C++ DLL(在 VS'05 中编译)吗?

c++ - new_node->compare_exchange_weak 中的下一次更新

asp.net - 使用 Rider 在 Linux 上调试 ASP.NET Web API 2

arrays - 数组包含太慢的 Swift

c++ - 非常快速地访问数组中的数据

c++ - 即使键相等,hash_map 也会保存每个键/值对

linux - "mkdir || echo && exit"即使 mkdir 成功退出

c - Linux 原始套接字权限问题

c# - 深入了解 EF。包含与加入

arrays - 最小缓冲区的值是多少,这样一个int数组将按升序排序?