Эффект неиспользованных методов и свойств на библиотеке или исполняемом файле

Я играю вокруг с созданием генератора исходного кода для C# (.NET). Будет генерация свойств или методов, которые никогда не заставляют названную причину мой код работать медленнее? Как насчет того, чтобы вставить операторы "использования" для библиотек, которые не привыкают?

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

5
задан JasonMArcher 13 July 2015 в 03:49
поделиться

3 ответа

Компилятор уже достаточно умн, чтобы только перечислите ссылки на сборы в конечном файле исполняемых файлов, которые на самом деле используются. Нет необходимости возиться с помощью ссылок на сборку или использовать директивы.

Компилятор JIT будет когда-либо генерировать код для методов, которые фактически называются. Таким образом, у вас нет никакого машинного кода или компиляционного времени накладных расходов из-за кода, который никогда не используется.

Ваше исполняемое изображение ссылается через отображаемый память файлом CLR. ОЗУ будет использоваться только в том случае, если фактическое содержание в DLL используется CLR. Это зависит от того, как IL из используемых вами методов распространяется через изображение. Существуют разумные шансы, которые, поскольку jit Compiler никогда не ссылается на IL, данные изображения также не будут выпущены в ОЗУ. Другими словами, вы потеряете некоторое виртуальное пространство памяти, но не потребляем соответствующее количество оперативной памяти.

Если ваша DLL является сильной именем и сохранена в не доверенном месте, то время теплых загрузки будет немного дольше из-за большего размера файла.

6
ответ дан 18 December 2019 в 11:56
поделиться

Неиспользуемые методы сделают исполняемый файл немного больше. Это займет немного больше времени для загрузки и потребляет больше системной памяти.

Если приложение работает в ограниченной среде памяти, вы можете увидеть небольшое снижение производительности.

Помимо этого, вы не должны видеть замедление производительности.

Заявления «Использование» просто позволяют писать более короткие версии имен классов в исходном коде. Они не влияют на размер файла или скорость выполнения.

Существуют сторонние линкеры, которые могут удалить неразрешенные методы от окончательного .exe.

5
ответ дан 18 December 2019 в 11:56
поделиться

Вы должны рассмотреть возможность использования частичных методов, особенно при использовании генераторов кода. Частичный метод, если он на самом деле не реализован, будет удален компилятором.

4
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: