Есть ли преимущества компиляции сборки под x64? - PullRequest
6 голосов
/ 07 июня 2009

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

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

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

Ответы [ 4 ]

4 голосов
/ 07 июня 2009

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

2 голосов
/ 07 июня 2009

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

1 голос
/ 07 июня 2009

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

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

0 голосов
/ 07 июня 2009

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

...