DLL对执行速度的影响

时间:2012-02-26 20:00:22

标签: c++ dll

首先,我使用用户定义的标头和相应的cpp文件。然后我包括等等。如果我切换到DLL,代码的执行速度会被延迟吗?

其次,我知道在“DLL”中,“D”代表“动态”但是,我的朋友说有两种方法可以使用它们:静态和动态。如果它已经是动态的,我们要用“静态”做什么?

2 个答案:

答案 0 :(得分:12)

除非函数非常小(否则会内联),使用DLL在性能上没有任何区别(除了加载DLL确实会增加应用程序的启动时间这一事实。)大,性能 - 关键应用程序使用DL​​L(例如Intel Math库。)如果编译器无法进行整个程序优化,则会有轻微的处罚,但这些差异通常无关紧要。

关于静态/动态:我认为他意味着你可以通过正常的方式链接DLL(通过使用导入库),这会强制它总是被加载或在运行时动态加载它(使用{{1 }和LoadLibrary。)没有性能差异,但使用dlopen可以延迟加载库,直到实际需要。

答案 1 :(得分:2)

  1. 生产力不应该回归,只要从dll调用函数一般类似于本地函数调用。

  2. 存在两种类型的库:

    • 从一个角度来看, dynamic libs和 static libs。这里 static 意味着,lib中的所有代码都将静态地链接到您的exe,相反动态 lib允许单独代码从可执行文件到共享库,该代码将动态加载
    • 然后,动态 libary可以静态链接,这意味着,操作系统会在启动时将库链接到您的程序,动态,这意味着,您将获得指针在图书馆,传说中的符号。虽然动态加载提供了更大的灵活性,但使用静态链接更加困难。