|
|
1
11
有 几乎 主要的“间接费用”实际上是机会成本,而不是“间接费用”本身。也就是说,现代的编译器可以做一件叫做“整个程序优化”的事情,即在链接时一次编译和优化整个模块(.exe或.dll)。这意味着编译器可以在整个程序中的所有.cpp文件中执行调整调用约定、内联函数等操作,而不仅仅是在单个.cpp文件中。 对于某些类型的应用程序,这可以带来相当不错的性能提升。但当然,整个程序优化不能跨越DLL边界。 |
|
|
2
3
一个DLL有两个开销。首先,当DLL加载到内存中时,必须为加载DLL的实际地址固定内部地址,而不是链接器假定的地址。这可以通过重新建立dll最小化。第二个开销是当程序和DLL被加载时,因为对DLL的程序调用已经填充了函数的地址。除了非常大的程序和dll之外,这些开销通常可以忽略不计。
我喜欢使用静态链接库,不是为了减少开销,而是为了尽量减少在程序中保留DLL的麻烦。 |
|
|
3
2
|
|
|
Guilherme Albertini · DLL中的类 8 年前 |
|
|
Naomi · C#dll资源文件更改语言 8 年前 |
|
|
AidanH · C#DLL语言翻译实现[关闭] 8 年前 |
|
|
subham · DLL函数调用不工作 8 年前 |
|
|
PixelThis · 为什么我的DLL要求我的程序有一个特定的名称? 8 年前 |
|
|
nemo · DLL的“好”调用约定是什么? 8 年前 |