查看我的程序运行时 callgrind 的输出,我看到 125% !!!的周期花费在 _dl_runtime_resolve_xsave'2(显然是动态链接器的一部分)中,而 100% 花费在 main 中。但它也表示,几乎所有在 _dl_runtime_resolve_xsave'2 中花费的时间实际上都花在了内部方法中(self=0%),但 callgrind 没有显示该方法的任何被调用者。此外,看起来 _dl_runtime_resolve_xsave'2 是从我正在分析的程序中的多个位置调用的。
我可以理解,可能会在 main 之外花费一些时间,因为我正在分析的程序正在使用原型模式,并且在加载动态库时正在构建许多对象原型,但这不能接近 25% 的时间特定的运行(因为如果我在没有输入数据的情况下运行,它所花费的时间比我现在正在分析的运行要少几个数量级)。
此外,该程序在程序启动后未使用 dlopen 打开共享对象。一切都应该在开始时加载。
如何解释对 _dl_runtime_resolve_xsave'2 的调用?我需要担心在这种方法中花费的时间吗?
谢谢您的帮助。