Как использовать ilasm с релиз-режимом

Я хотел бы использовать ilasm для компиляции кода il. Есть довольно много параметров, которые я могу использовать. В Visual Studio я могу просто поставить галочку «Оптимизировать код» в настройках проекта. Как я могу включить компилятор ilasm для компиляции в «релизном» режиме, оптимизировать код и создать как можно меньше отладочной информации -> Я хотел бы достичь наилучшей производительности.


person Florian    schedule 05.05.2014    source источник


Ответы (1)


Вы можете использовать параметры командной строки для ilasm чтобы повлиять на компиляцию. Похоже, вам нужен параметр /optimize. Однако это лишь незначительная оптимизация; переключение «длинных инструкций» на более короткие. Это повлияет на количество байтов, необходимых для кодирования инструкции, поэтому сэкономит вам несколько байтов.

Написание кода il означает, что вы точно знаете, как вы хотите, чтобы все было сделано, и не будет никаких оптимизаций во время компиляции (за исключением преобразования длинных инструкций в короткие).

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

Написание простого кода означает, что вы отказываетесь от идеи иметь язык высокого уровня (например, C#), который может выразить то, что вы хотите, в меньшем количестве строк кода, и позволяете любым интересным инструментам, которые вы найдете, анализировать его на предмет встраивания, возможных проблем с потоками и смотреть, что может выполняться параллельно на нескольких ядрах. Написание кода на языке означает, что вы заявляете, что умеете писать код на языке лучше, чем ассемблер. Ты?

person sisve    schedule 05.05.2014
comment
Я думаю, что это должен быть [...] лучший код IL, чем компилятор, поскольку этап ассемблера все еще выполняется в обоих случаях и в любом случае не должен существенно затрагивать IL. - person Tamschi; 05.05.2014
comment
Хорошо. Я должен использовать инструкции, компилятор по умолчанию не поддерживает. Я читал о переключателе /debug. Но я не очень понимаю, что он делает. Могу ли я что-нибудь сделать с этим, чтобы оптимизировать производительность? - person Florian; 05.05.2014
comment
«Вы мало что можете с этим сделать» Ну, вы можете отключить его с помощью переключателя /debug. - person svick; 05.05.2014
comment
Что ж, моя проблема в том, что я боюсь, что не понимаю назначение переключателя /debug. Должен ли я отключить его? - person Florian; 05.05.2014
comment
Вам нужен код выпуска, вы вообще не должны касаться переключателя /debug. Это переключатель, наличие которого включает определенные функции отладки. Отсутствие переключателя /debug означает, что он выключен. Вы можете использовать /pdb, если хотите создать файл pdb, чтобы помочь с будущей отладкой/трассировкой стека. - person sisve; 06.05.2014