【问题标题】:Explicit template instantiation and debug load time显式模板实例化和调试加载时间
【发布时间】:2021-05-16 09:00:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ gdb explicit-instantiation debug-information


    【解决方案1】:

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

    它很可能不起作用。

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

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

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

    (可能无法丢弃所有重复的调试信息,所以实际上你可能会发现一个微小的加速,但我怀疑它会提高近 40%。)

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      相关资源
      最近更新 更多