gpt4 book ai didi

c++ - 测量程序启动时动态链接所花费的时间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:43 25 4
gpt4 key购买 nike

如何衡量程序启动时动态链接所花费的时间?

想到的解决方案以及我犹豫的原因:

1) 在运行程序之前和 main 开始时打印一些东西。

这没有考虑在 main 之前运行的可能代码——全局变量的初始化和任何由此产生的函数调用。它不是开箱即用的自动化工具,好吧,它给我的印象是粗糙且准确度可疑。

2) 空程序上的时间命令,该程序具有与要测试的程序相同的 header 并且动态链接到相同的库。

我不确定这个。我不知道编译器和链接器是否可以合谋根据客户端代码的内容来缩写动态链接,但它似乎是可能的。

编辑:问这个问题 6 分钟后,我仔细检查了 Google 上明显的搜索词,“测量动态链接花费的时间”,并作为第一个命中结果回到这里。

最佳答案

使用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.so 中找到, ld-linux.so手册页(这些实际上是相同的)。 Google 搜索有助于了解更多细节。

关于c++ - 测量程序启动时动态链接所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24625386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com