Каковы плюсы / минусы 64-битного .NET? - PullRequest
12 голосов
/ 09 июля 2009

Как уже упоминалось в в этом вопросе / комментариях , существуют определенные недостатки при переходе с 32-битного .NET на 64-битный .NET.

Вероятно, самым большим преимуществом является гораздо большее адресное пространство процесса в 64-битном мире, но какие еще плюсы и минусы стоит отметить?

Ответы [ 3 ]

6 голосов
/ 09 июля 2009

Я видел, что это было заметно быстрее (~ 4 раза по моему опыту) для некоторых вычислительно тяжелых приложений (с сокращением числа). Лучше всего, что это бесплатно в чисто управляемых случаях. Вам даже не нужно ничего перекомпилировать, чтобы получить выгоду. Кроме того, я слышал, что x64 JIT имеет более агрессивные оптимизации.

Самым большим недостатком, вероятно, является невозможность загрузки 32-битных COM-компонентов в процессе.

5 голосов
/ 09 июля 2009

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

http://blogs.msdn.com/b/joshwil/archive/2006/07/18/670090.aspx

Это стоит прочитать. Это старый (.NET 2.0), но многое еще применяется; размеры указателя, COM-взаимодействие и т. д .:

Миграция 32-битного управляемого кода в 64-битный

Стоит также знать, что даже на x64 CLR имеет ограничение на размер одного объекта 2 Гб. Это не проблема для 99% сценариев, но если вы переходите на x64, вероятно, это потому, что вы можете работать с большими наборами данных. Смотрите здесь для дальнейшего обсуждения:

Ограничены ли строки C # (и другие API .NET) размером 2 ГБ?

Итак. Если ваше приложение не использует данные, которые не помещаются в 32-битную память или интенсивно используют 64-битные операции, вы можете не увидеть много, если есть какие-либо улучшения.

Другим недостатком является то, что Visual Studio для приложений x64 имеет некоторые ограничения:

  • Редактировать и продолжить недоступно для 64-битной отладки.

  • Вы не можете отлаживать в смешанном режиме, звонки из нативного кода в управляемый код, или и наоборот, в 64-битном коде.

См .: http://msdn.microsoft.com/en-us/library/ms184681(VS.80).aspx

Примечание: 64-битные компиляторы C ++ не установлены по умолчанию. Вы должны выбрать их во время установки.

Я также только что нашел это (потому что я сам оптимизирую приложение x64).

«Портирование и оптимизация приложений на 64-битной Windows для AMD64 ...»

http://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/AMD64_PortApp.doc

Имеет много хороших указателей на переключатели компилятора и тому подобное.

1 голос
/ 28 августа 2009

64-битные приложения не всегда будут работать быстрее, чем 32-битные. Об этом говорится в двух постах ниже:
http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Большие указатели означают больше памяти и потребление кеша и количество байт доступного кеша процессора одинаково для 32-битных и 64-битных процессы.

http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

64-битное адресное пространство для процесса не поможет вам со страницей неисправности, за исключением, возможно, косвенных способов, и это определенно повредит вам в прямые пути, потому что ваши данные больше. В отличие от 64 бит операционная система может вам очень помочь! Если вы работаете как 32-битное приложение на 64-битная ОС, тогда вы получите все 4G адресное пространство и все это может быть опираясь на физическую память (если у вас есть ОЗУ) даже без вас использовать 64 бит указывает на себя.

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