库中的链接时间优化

Link Time Optimization in libraries

本文关键字:时间 优化 链接      更新时间:2023-10-16

我刚刚开始学习链接时间优化,所以我不确定这是否是一个愚蠢的问题。

我正在编写一个库,主要供我们组织内部使用。有大量的类,既有公共函数也有私有函数,一小部分公共函数使用 Boost 以 Python 模块的形式导出。所有其他函数(包括公共和私有)仅在库中使用。我尝试使用-flto -fuse-linker-plugin,并发现性能有了不小的提高。我想知道是否可以向优化器传达除导出到 Python 的函数之外的任何函数都可能经过优化,因为该库将仅通过 python 模块使用。

我将不胜感激任何意见/建议。

你没有说明你的平台,我的建议将适用于 ELF 目标,如 Linux、Solaris、*BSD

你可以玩符号可见性,基本上告诉编译器/链接器只公开用于与python接口的方法/函数。链接: https://gcc.gnu.org/wiki/Visibility

第二个建议是使用黄金链接器,

对我来说,使用黄金链接器编译的应用程序/共享库运行得更快一点(但可测量一点)

更新

这是我的问题/讨论的链接 wrt 黄金与 BFD 链接器

二进制链接与黄金链接器运行得更快吗?