gpt4 book ai didi

c++ - DLL的开销

转载 作者:可可西里 更新时间:2023-11-01 13:27:59 26 4
gpt4 key购买 nike

我有一个非常基本的问题。

  1. 当库仅由单个进程使用时。我应该将它保留为静态库吗?
  2. 如果我将库作为 DLL 使用,但只有一个进程使用它。 **间接费用是多少?*

最佳答案

拥有一个单独的 DLL 几乎没有开销。基本上,对从 DLL 导出的函数的第一次调用将运行一个微小的 stub 来修复函数地址,以便通过跳转表的单个跳转执行后续调用。 CPU 的工作方式,这种额外的间接寻址实际上是免费的。

主要的“开销”实际上是机会成本,而不是“开销”本身。也就是说,现代编译器可以做一些称为“整个程序优化”的事情,其中​​整个模块(.exe 或 .dll)在链接时一次编译和优化。这意味着编译器可以在整个程序的所有 .cpp 文件中执行调整调用约定、内联函数等操作,而不仅仅是在单个 .cpp 文件中。

对于某些类型的应用程序,这可以带来相当不错的性能提升。但当然,整个程序的优化不能跨越 DLL 边界。

关于c++ - DLL的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030043/

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