是否有可能来自引用的dll的方法代码在我自己的代码中被内联?

时间:2011-02-28 19:33:46

标签: c# .net inlining

前段时间我读过一些关于'内联'的内容。 .Net编译器将从小方法中注入代码(内联),以便更快地执行。

引用的dll中的方法代码是否可能在我自己的代码中内联?

4 个答案:

答案 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/