![]() |
1
11
有 几乎 主要的“间接费用”实际上是机会成本,而不是“间接费用”本身。也就是说,现代的编译器可以做一件叫做“整个程序优化”的事情,即在链接时一次编译和优化整个模块(.exe或.dll)。这意味着编译器可以在整个程序中的所有.cpp文件中执行调整调用约定、内联函数等操作,而不仅仅是在单个.cpp文件中。 对于某些类型的应用程序,这可以带来相当不错的性能提升。但当然,整个程序优化不能跨越DLL边界。 |
![]() |
2
3
一个DLL有两个开销。首先,当DLL加载到内存中时,必须为加载DLL的实际地址固定内部地址,而不是链接器假定的地址。这可以通过重新建立dll最小化。第二个开销是当程序和DLL被加载时,因为对DLL的程序调用已经填充了函数的地址。除了非常大的程序和dll之外,这些开销通常可以忽略不计。
我喜欢使用静态链接库,不是为了减少开销,而是为了尽量减少在程序中保留DLL的麻烦。 |
![]() |
3
2
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |