Как компиляция моего приложения для 64-битной системы сделает его быстрее или лучше? - PullRequest
12 голосов
/ 31 января 2009

Я использую C #, .NET, VS.NET 2008.

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

Это будет быстрее или меньше? Зачем?

Делает ли это его более совместимым с системой x64 (по сравнению с 32-разрядным приложением)?

Ответы [ 5 ]

16 голосов
/ 31 января 2009

Для нативных приложений вы получаете такие преимущества, как увеличение адресного пространства и так далее. Однако приложения .NET выполняются в среде CLR, что устраняет любые различия в архитектуре.

Предполагая, что вы имеете дело только с управляемым кодом, нацеливание на конкретную платформу не дает никаких преимуществ; лучше компилировать с установленным флагом anycpu (который включен по умолчанию). Это создаст независимые от платформы сборки, которые будут одинаково хорошо работать на любой из архитектур, на которых работает CLR.

Конкретный таргетинг (скажем, x64) не даст вам никакого повышения производительности и не позволит вашим сборкам работать на 32-битной платформе.

Эта статья содержит немного больше информации по этому вопросу.

Обновление: Скотт Хансельман только что опубликовал хороший обзор этой темы.

4 голосов
/ 31 января 2009

Теоретически, программа, скомпилированная для x64, будет работать быстрее, чем программа, скомпилированная для x86. Причина этого в том, что в архитектуре x64 есть более общие регистры. 32-битный x86 имеет только 4 регистра общего назначения. AMD добавила 8 дополнительных регистров общего назначения в свои расширения x64. Это позволяет уменьшить загрузку памяти и (немного) повысить производительность.

На самом деле, это не имеет большого значения для производительности, но должно быть незначительным.

Размер двоичного файла и объем памяти несколько увеличатся при использовании 64-разрядных инструкций, но поскольку x64 по-прежнему является архитектурой CISC, размер двоичного файла не удваивается, как в архитектуре RISC. Большинство инструкций по-прежнему короче 64 бит.

3 голосов
/ 31 января 2009

На самом деле 64-битные приложения, которым не требуется большой объем памяти, работают медленнее. Одна из причин этого заключается в том, что вам нужно перемещать данные. Если вы не можете использовать> 2 ГБ памяти (например, для кэширования), я бы не рекомендовал это делать.

Вот интересная ссылка, которую я только что нашел http://www.osnews.com/story/5768 с большим количеством информации.

2 голосов
/ 31 января 2009

Я сомневаюсь в этом (учитывая платформу C # /. NET), если только вы не используете Native Code. Помните, что управляемый код .NET скомпилирован в IL, а переключатель платформы по умолчанию установлен на anycpu, поэтому вы должны получить более высокую производительность на 64-битной ОС с существующим двоичным файлом:

http://blogs.msdn.com/gauravseth/archive/2006/03/07/545104.aspx

В этой статье содержится масса полезной информации, в том числе об инструменте CorFlags, который позволит вам проверить PE-заголовок.

В общем, для двоичных файлов с собственным кодом, да.

0 голосов
/ 31 января 2009

Я действительно не эксперт по архитектуре ЦП, поэтому относитесь к моим комментариям легкомысленно. В Википедии есть статья, описывающая архитектуру x86-64 ( текст ссылки ).

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

Другим фактором, который необходимо учитывать, является количество доступных наборов инструкций. Когда программа компилируется в x86, обычно ее целью является запуск всех существующих 32-битных CPUS (Pentium 1, 2, 3, 4, core * и т. Д.). Каждое новое поколение CPU добавляет новые наборы инструкций, эти инструкции не могут быть использованы программой, которая хочет быть полностью переносимой в двоичном формате среди всех x86 CPUS. Поскольку бит x86-64 - это новая архитектура, перекомпиляция программы для этого компьютера дает компилятору более широкий набор инструкций, чтобы не беспокоиться о двоичной совместимости между 64-битным CPUS diff.

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