Существует ли «профилировщик размера функции» для .NET? - PullRequest
2 голосов
/ 11 апреля 2011

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

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

Я задавал этот вопрос ранее для C ++ (вывод был: нет, но в Linux есть полезная команда оболочки).

Ответы [ 4 ]

2 голосов
/ 11 апреля 2011

Причина, по которой файл не изменяется при редактировании, заключается в том, что каждый раздел формата PE выровнен по определенным границам. (Например, раздел .text обычно начинается со смещением 0x1000), а остальные разделы выравниваются в зависимости от размера их содержимого. Между ними находится заполнение '\ 0', поэтому при сжатии файла программой установки будет эффективно исключено пространство.

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

1 голос
/ 11 апреля 2011

Попробуйте отражение. В классе MethodInfo есть метод для получения представления MSIL: http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody.aspx

0 голосов
/ 11 апреля 2011

Windows

ildasm

Mono

monodis

Разбирает сборки (или их части) через командную строку

0 голосов
/ 11 апреля 2011

.NET Reflector показывает эту информацию (при декомпиляции в MSIL каждая инструкция отображается с «номером строки», который является смещением в байтах от начала метода)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...