2

少し前に、「インライン化」について読んだことがあります。.Net コンパイラは、小さなメソッドからコード (インライン) を挿入して実行を高速化します。

参照された dll のメソッドのコードが自分のコードでインライン化される可能性はありますか?

4

4 に答える 4

6

はい、JITting 時に可能です。

コンパイル時ではありません。

つまり、アセンブリにはそれを記述したコードのみが含まれますが、実行時にネイティブ マシン コードに JIT されると、JIT コンパイラは他のアセンブリの小さなメソッドを独自のコードにインライン化する可能性があります。

于 2011-02-28T19:37:25.000 に答える
3

はい。ngen.exe を使用してアセンブリをプリコンパイルしない場合、JIT コンパイラはアセンブリ間で自動的にインライン化できます。

于 2011-02-28T19:36:08.650 に答える
0

正確には、No.

しかし、DLL の Lib が利用可能な場合 (DLL は Dynamically Linked Library の略で、静的にリンクすることはできません)、それが発生する可能性があります。

最適化のステップとしての自動インライン化は、小さな関数またはほとんど使用されない関数に対してのみ実行されますが、常にライブラリに対して実行されます。

結論として、スタティック リンク ライブラリ (Windows の *.lib またはUnix の .a) はプログラムにコピーできますが、ダイナミック リンク ライブラリ ( Windows の .dll または UNIX の *.so) はコピーできません。

.NET または同様のフレームワークの場合、話は少し異なります。

于 2011-02-28T19:39:27.840 に答える
0

その可能性は一般的に非常に高いです。ただし、自分で決めることはできません。決定するのはコンパイラです。

以下を確認してください: http://www.ademiller.com/blogs/tech/2008/08/c-inline-methods-and-optimization/

于 2011-02-28T19:39:57.920 に答える