前段时间我读过一些关于'内联'的内容。 .Net编译器将从小方法中注入代码(内联),以便更快地执行。
引用的dll中的方法代码是否可能在我自己的代码中内联?
答案 0 :(得分:6)
是的,这可能是在JITting时间。
不在编译时。
这意味着程序集将只包含您编写它的代码,但是当它在运行时被JIT到本机代码时,JIT编译器可能会将其他程序集中的小方法内联到您自己的代码中。
答案 1 :(得分:3)
是。如果不使用ngen.exe预编译程序集,则JIT编译器可以自动内联程序集。
答案 2 :(得分:0)
准确地说,没有。
但是如果DLL的Lib可用(DLL代表动态链接库,我们无法静态链接),它可能会发生。
自动内联作为优化步骤,仅在很少使用的小函数或函数上执行,但总是在库中执行。
总而言之,静态链接库(Windows中的* .lib或Unix中的 .a)可以复制到您的程序中,但是可以复制到动态链接库(Windows中的 .dll或* .so in UNIX)不能。
在.NET或类似框架的情况下,故事有点不同。
答案 3 :(得分:0)
检查:http://www.ademiller.com/blogs/tech/2008/08/c-inline-methods-and-optimization/