1

我一直想知道使用显式模板实例化是否可以帮助减少调试器加载二进制文件所需的时间。类似于通过相同机制减少链接时间的东西。

同样,有什么方法可以衡量这个吗?我可以readelf -e用来查看调试信息的大小,比如

 [33] .debug_info       PROGBITS         0000000000000000  048d175c
       000000000583f7f3  0000000000000000           0     0     1   

有没有更细粒度的(没有所有血淋淋的细节)?

有关信息,这是 Linux (RHEL 6.6) 上的 GCC 和 GDB。

4

1 回答 1

0

类似于通过相同机制减少链接时间的东西。

它很可能不起作用。

用于通过显式实例化加速构建的机制:不是将自动模板方法发送到.o需要它们的每个方法,然后让链接器丢弃重复项,而是显式地将方法实例化到单个文件中(导致较小的.o文件和较少的链接器工作)。

但是对于调试信息,调试器不会查看.o文件;它查看生成的链接可执行文件或共享库。到链接完成时,链接器已经丢弃了所有(或大部分)重复项。

因此,您可能不会观察到显式实例化的任何加速。

(可能无法丢弃所有重复的调试信息,因此您实际上可能会发现一个微小的加速,但我怀疑它会接近 40% 的改进。)

于 2021-02-13T02:32:06.110 回答