Есть ли преимущества в компиляции сборки как x64?

Предположим, у меня есть приложение .Net Framework 3.5 SP1 / CLR 2.0, которое должно работать на платформах x86 и x64. Предположим также, что по какой-то причине мне нужно создать отдельные программы установки x86 и x64.

Поскольку у меня в любом случае есть установщик для x64, будет ли какая-то польза от перекомпиляции самого приложения как x64, а не для "AnyCPU"?

Меняет ли установка цели на x64 что-либо, кроме информации заголовка сгенерированной сборки?


person Joergen Bech    schedule 07.06.2009    source источник
comment
(удалена сборка тега, потому что почти все сообщения с этим тегом касаются ассемблера, а не сборок .NET)   -  person Marco van de Voort    schedule 07.06.2009


Ответы (4)


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

person Steve    schedule 07.06.2009

Пока вы не создаете сборки, лучше оставить «AnyCPU» и позволить JIT нацеливаться на архитектуру.

person Mitch Wheat    schedule 07.06.2009

Я обнаружил, что когда я оборачиваю родную dll x86, сборка оболочки должна быть скомпилирована для платформы x86, иначе я получаю исключение BadImageFormatException на машине x64. Тогда это как снежный ком, поскольку все сборки, ссылающиеся на эту сборку, также должны быть скомпилированы для платформы x86.

Может быть, я просто делаю что-то не так, но вот что я обнаружил. Если бы я не использовал собственные библиотеки DLL, я бы оставил все свои сборки как «AnyCPU».

person Christo    schedule 07.06.2009

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

person Artur Soler    schedule 07.06.2009