Я бы с уверенностью сказал, что 99% приложений, которые мы пишем, не нуждаются в адресе более 2 ГБ памяти. Конечно, есть много очевидной выгоды для ОС, работающей на 64-битной основе, для решения большего количества ОЗУ, но есть ли какая-то особая причина, по которой типичное приложение будет скомпилировано 64-битным?
Есть ли какая-либо реальная точка, компилирующая приложение Windows как 64-битное?
Ответ 1
Есть улучшения производительности, которые можно увидеть с 64-битным. Хорошим примером является то, что некоторые параметры в вызовах функций передаются через регистры (меньше вещей, чтобы нажимать на стек).
Edit Я просмотрел некоторые из моих старых заметок, когда изучал некоторые различия в работе нашего продукта с 64-битной конструкцией по сравнению с 32-битной сборкой. Я провел тесты на четырехъядерной 64-разрядной машине. Поэтому возникает вопрос о сравнении яблок с апельсинами, так как 32-разрядный режим работает в режиме эмуляции. Однако кажется, что многие вещи, которые я читал например, такие как, например,, постоянно говорят, что скорость удара для WOW64 незначительна. Но даже если это утверждение неверно, ваше приложение почти наверняка будет запущено на 64-битной ОС. Таким образом, сравнение 32-битной сборки с 64-разрядной на 64-разрядной машине имеет значение.
В тестировании, которое я выполнил (конечно, не является исчерпывающим), я не нашел случаев, когда 32-битная сборка была быстрее. Однако многие интенсивные операции SQL, которые я выполнял (высокий процессор и высокий уровень ввода-вывода), были на 20-50% быстрее при работе с 64-битной сборкой. Эти тесты включали некоторые довольно "уродливые" операторы SQL, а также некоторые тесты TPCC с высоким concurrency. Конечно, многое зависит от коммутаторов компилятора совсем немного, поэтому вам нужно провести собственное тестирование.
Ответ 2
Построение их как 64-битных теперь, даже если вы никогда не выпускаете сборку, может помочь вам найти и устранить проблемы, с которыми вы столкнетесь позже, когда вы будете вынуждены строить и выпускать как 64-разрядные версии.
Ответ 3
x64 имеет еще восемь регистров общего назначения, которые недоступны при запуске 32-разрядного кода. Это в три раза больше (в два раза больше, если вы считаете ESI, EDI, EBP и ESP как общую цель, а я нет). Это может сэкономить массу загрузок и хранилищ в функциях, которые используют более четырех переменных.
Ответ 4
Не стоит недооценивать маркетинговую ценность предложения собственной 64-разрядной версии вашего продукта.
Кроме того, вы можете быть удивлены тем, как много людей работают над приложениями, которым требуется столько памяти, сколько они могут получить.
Ответ 5
Я бы сказал, только сделайте это, если вам понадобится больше 2 ГБ.
Одна вещь - 64-битные средства компиляции (очевидно) 64-битные указатели. Это означает, что структура кода и данных становится немного больше, что означает, что приложение. немного выиграет от кеша и немного пойдет в виртуальную память и т.д.
Итак, если вам это не нужно, основной эффект заключается в том, чтобы сделать ваше приложение немного медленнее и более раздутым без причины.
Тем не менее, по прошествии времени вы все равно будете заботиться о 64-битных битках, просто потому, что будут написаны все инструменты и библиотеки. Даже если ваше приложение может жить довольно счастливо в 64K, вы вряд ли будете использовать 16-битный код - на самом деле выигрыш не имеет значения (в любом случае это небольшое быстрое приложение), и, конечно же, он перевешивает эту проблему. Со временем мы увидим 32-битное то же самое.
Ответ 6
Вы можете считать это будущим. Это может быть далеко, но рассмотрим несколько лет в будущем, где 64-битная ОС и процессоры являются повсеместными (подумайте о том, как 16-бит исчез, когда 32-бит занял верх). Если ваше приложение 32-битное, и все ваши конкуренты перешли к 64-битным к тому времени, ваше приложение может рассматриваться как (или обвиняемое вашими конкурентами как) устаревшее, более медленное или неспособное к изменениям. Возможно, даже один день поддержка 32-разрядных приложений будет отключена или неполна (может ли Windows 7 запустить 16-разрядные приложения должным образом?). Если вы уже создаете 64-битную версию своего приложения сегодня, вы избегаете этих проблем. Если вы отложите его до конца, вы можете написать намного больше кода между теперь и когда вы порт, то ваш порт будет еще сложнее.
Для многих приложений не так много убедительных технических причин, но если это будет легко, портирование теперь может сэкономить ваши усилия в будущем.
Ответ 7
Если вам не требуется расширенное адресное пространство, доставка в режиме 64 бит ничего не дает и имеет некоторые недостатки, такие как увеличение потребления памяти и давления в кеше.
В то время как мы предлагаем 64 битовые сборки, наш клиент, который находится на пределе, подталкивает нас к сокращению потребления памяти, чтобы они получили эти преимущества.
Ответ 8
Все приложения, которым может потребоваться большая часть памяти: серверы баз данных, которые хотят кэшировать большое количество данных в памяти, научные приложения, которые обрабатывают множество данных,...
Ответ 9
Я недавно прочитал эту статью, Оптимизация программного обеспечения на С++. В главе 2.3 Choice of operating system
имеется сравнение преимуществ и недостатков системы 64 и 32 бит с некоторыми конкретными наблюдениями в отношении Windows.
Марк Уилкинс уже отметил в этой теме больше регистров для вызовов функций. Другим интересным свойством 64-битной системы является следующее:
The SSE2 instruction set is supported on all 64-bit CPUs and operating systems.
Инструкции SSE2 могут обеспечить отличную оптимизацию, и они все чаще используются, поэтому, на мой взгляд, это замечательная функция.
Ответ 10
Fastcall ускоряет вызовы подпрограмм, сохраняя первые четыре параметра в регистрах.
Ответ 11
Когда вы говорите, что 99% приложений не будут пользоваться 64-битными, это может быть верно для вас лично, но в течение дня я использую Visual Studio и Xcode для компиляции С++ с большой базой кода, -Gb с Google Desktop и Spotlight. Затем я прихожу домой, чтобы писать музыку с помощью секвенсора, используя несколько звуковых библиотек Gb, и делать несколько фотошопов на моих 20Gb фотографиях и, возможно, немного редактировать видео с помощью моих праздничных клипов.
Итак, для меня (и я смею сказать, что многие другие пользователи), наличие 64-битных версий многих из этих приложений будет большим преимуществом. Текстовый процессор, веб-браузер, почтовый клиент: возможно, нет. Но все, что связано с крупными СМИ, действительно приносит пользу.
Ответ 12
Дополнительные данные могут обрабатываться за такт, что может обеспечить повышение производительности, например. криптография, кодирование видео и т.д.