在某些情况下,选择静态链接而不是动态链接是否有令人信服的性能原因?我听过或读过以下内容,但我对这个问题的了解还不足以证明它的真实性。
1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计。
2)(1)如果使用使用配置文件数据来优化程序热路径的配置文件编译器,则不是真的,因为使用静态链接,编译器可以优化您的代码和库代码。使用动态链接,只能优化您的代码。如果大部分时间都花在运行库代码上,这可能会产生很大的不同。否则,(1)仍然适用。
iszxjhcz16#
另一个考虑因素是库中实际使用的目标文件(翻译单元)的数量与可用的总数量之比。如果库是从许多对象文件构建的,但您只使用其中几个对象文件中的符号,这可能是支持静态链接的理由,因为您只链接静态链接时使用的对象(通常),并且通常不包含未使用的符号。如果您使用共享库,则该库包含所有翻译单元,并且可能比您想要或需要的要大得多。
16条答案
按热度按时间iszxjhcz16#
另一个考虑因素是库中实际使用的目标文件(翻译单元)的数量与可用的总数量之比。如果库是从许多对象文件构建的,但您只使用其中几个对象文件中的符号,这可能是支持静态链接的理由,因为您只链接静态链接时使用的对象(通常),并且通常不包含未使用的符号。如果您使用共享库,则该库包含所有翻译单元,并且可能比您想要或需要的要大得多。