首先,我使用用户定义的标头和相应的cpp
文件。然后我包括等等。如果我切换到DLL,代码的执行速度会被延迟吗?
其次,我知道在“DLL”中,“D”代表“动态”但是,我的朋友说有两种方法可以使用它们:静态和动态。如果它已经是动态的,我们要用“静态”做什么?
答案 0 :(得分:12)
除非函数非常小(否则会内联),使用DLL在性能上没有任何区别(除了加载DLL确实会增加应用程序的启动时间这一事实。)大,性能 - 关键应用程序使用DLL(例如Intel Math库。)如果编译器无法进行整个程序优化,则会有轻微的处罚,但这些差异通常无关紧要。
关于静态/动态:我认为他意味着你可以通过正常的方式链接DLL(通过使用导入库),这会强制它总是被加载或在运行时动态加载它(使用{{1 }和LoadLibrary
。)没有性能差异,但使用dlopen
可以延迟加载库,直到实际需要。
答案 1 :(得分:2)
生产力不应该回归,只要从dll调用函数一般类似于本地函数调用。
存在两种类型的库:
exe
,相反动态 lib允许单独代码从可执行文件到共享库,该代码将动态加载。