Возможно ли, чтобы код метода из ссылочной библиотеки DLL был встроен в мой собственный код? - PullRequest
2 голосов
/ 28 февраля 2011

Некоторое время назад я прочитал кое-что о «встраивании».Компилятор .Net будет внедрять код (встроенный) из небольших методов, чтобы ускорить выполнение.

Возможно ли, что код метода из ссылочной библиотеки DLL встроен в мой собственный код?

Ответы [ 4 ]

6 голосов
/ 28 февраля 2011

Да, это возможно во время JITting.

Не во время компиляции.

Это означает, что ваша сборка будет содержать только код, с которым вы ее написали, но когда она будет JITtedво встроенный машинный код во время выполнения JIT-компилятор может встроить небольшие методы из других сборок в ваш собственный код.

3 голосов
/ 28 февраля 2011

Да.Если вы предварительно не скомпилируете сборку с помощью ngen.exe, JIT-компилятор может автоматически встроить сборки в единую сборку.

0 голосов
/ 28 февраля 2011

это вообще очень возможно. но вы не можете решить сами, это компилятор, который решает:

проверьте, что: http://www.ademiller.com/blogs/tech/2008/08/c-inline-methods-and-optimization/

0 голосов
/ 28 февраля 2011

Точнее, нет.

Но если библиотека DLL доступна (DLL означает динамически связанную библиотеку, что-то, что мы не можем статически связать), это может произойти.встраивание в качестве шага оптимизации выполняется только для небольших функций или функций, используемых очень редко, но всегда для библиотек.

В заключение, библиотека статических ссылок (* .lib в Windows или .a вUnix) может быть скопирован в вашу программу, но динамическая библиотека ссылок ( .dll в Windows или * .so в UNIX) не может.

В случае .NET или аналогичных сред, историянемного по-другому.

...