在程序启动时测量dynamic链接所花的时间?

我如何测量在程序启动时dynamic链接的时间?

想到的解决scheme,为什么我犹豫不决:

1)在运行程序之前和主程序开始之前打印一些时间。

这并没有考虑可能的代码,这些代码在全局variables的主要初始化和任何结果函数调用之前运行。 它不是自动出来的,它让我觉得很粗鲁,而且很可疑。

2)一个空程序的时间命令,它与被测程序具有相同的标题,并dynamic链接到相同的库。

我不确定这个。 我不知道编译器和链接器是否可以合谋缩短基于客户端代码内容的dynamic链接,但似乎是可能的。

编辑:问了6分钟后,我仔细检查了谷歌显而易见的search条件,“度量dynamic链接时间”,最终成为第一个search结果。

Solutions Collecting From Web of "在程序启动时测量dynamic链接所花的时间?"

使用LD_DEBUG

尝试这个:

 LD_DEBUG=statistics ./myprog 

它会输出各种统计的简短列表。 一个例子:

 xenon-lornix:~> LD_DEBUG=statistics ls 22833: 22833: runtime linker statistics: 22833: total startup time in dynamic loader: 2500702 clock cycles 22833: time needed for relocation: 757822 clock cycles (30.3%) 22833: number of relocations: 155 22833: number of relocations from cache: 8 22833: number of relative relocations: 1253 22833: time needed to load objects: 1325154 clock cycles (52.9%) 

显示有关加载/运行ls命令的信息。

使用LD_DEBUG=help ./myprog将显示可用于LD_DEBUG的其他选项的名称。

更多信息可以在ld.sold-linux.so手册页找到(这些实际上是相同的)。 谷歌搜索可以帮助更多的细节。