Должен ли я предоставить сборку x64 моего приложения?

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

Однако я начал замечать некоторые более мелкие приложения, предлагающие x64 версии своих инсталляторов в дополнение к стандартным версиям x86. Поскольку x86 отлично работает на Windows x64 с использованием WoW, есть ли какая-то польза для меня, выпуская x64-скомпилированную версию моего приложения? Как я вижу:

Плюсы:

  • Потенциально более высокая производительность (в каких условиях, однако)

Минусы:

  • Дополнительная сборка для создания/поддержки
  • Потенциальные ошибки в объекте x64, отсутствующие в целевой точке x86
  • Зависимость от x64 версий DLL для поставщиков/ОС, требующая наличия другого контрольного списка установки и введения дополнительных проблем устранения неполадок.

Каковы некоторые веские причины, которые могут заставить меня пересмотреть добавление x64-скомпилированной версии моего приложения?

Ответ 1

Еще одна потенциальная причина для компиляции и отладки версии x64 заключается в том, что она может выявлять скрытые ошибки в версии x86. Например, это может привести к неправильным преобразованиям между 32-битными целыми числами и (сейчас) 64-разрядными указателями. Это также позволяет вам поддерживать x64 в будущем.

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

BTW. Приложения, основанные на .NET, автоматически выигрывают от выполнения в 64-битной системе без каких-либо изменений кода. Дополнительного тестирования не требуется.

Ответ 2

Потенциальное повышение производительности в основном связано с использованием 64-битных целых чисел (примерно в 4 раза быстрее, чем в x64 на моей машине, чем в x86 на том же), и тот факт, что компиляторы могут предполагать, что некоторые функции ЦП будут универсально присутствовать в Процессоры, поддерживающие x64, такие как SSE2, и; это может привести к более оптимизированному коду.

Для многих приложений, особенно маленьких, не слишком сложно быть 64-битным чистым, а для более крупных - серьезной головной болью. Причин, как правило, мало. Но некоторые платформы не устанавливают 32-разрядную поддержку в 64-разрядных версиях по умолчанию (я думаю, что FreeBSD должно быть явно сказано для этого, но я могу ошибаться в этом).

Ответ 3

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

Поддержка Windows для 32-разрядных программ будет ухудшаться в будущем (хотя и медленно), поэтому я говорю в другой год или 2, вы можете просто задаться вопросом, почему вы хотите развернуть 32-битное приложение...

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

Ответ 4

Производительность; x86_64 быстрее, чем x86, на небольшую сумму (что также зависит от вашего компилятора) по причинам, уже заявленным. Кроме того, проще поддерживать действительно огромные наборы данных, но, конечно, многие приложения никогда не нуждаются в этом.

Конечно, в Linux и OS X вы действительно должны поддерживать x86_64; Я набираю это на 64-битном браузере в OS X, а мой Linux-ящик в углу также почти 64-битный. 64-разрядная версия Windows немного больше, но теперь она идет (с драйверами).

Ответ 5

Это часто основано на человеческих факторах, а не на объективных технических рассуждениях. 64-бит является последним и самым большим и должен быть лучше 32-бит. Если клиенты этого хотят, клиент всегда прав. Поговорили с пользователями Windows, указав, что их целью было сделать так, чтобы при просмотре их списка процессов в окнах * 32 не появлялось рядом с любым из их приложений.

Часто это вызвано путаницей в точке совместимости, где люди имеют 64-битные операционные системы и просто хотят убедиться, что программное обеспечение будет работать на своих компьютерах. Ожидание среднего уровня понимания технической демаркационной линии между 32-битными процессами в 64-битной ОС нереально. Если явно не указано на упаковке, это может стать поводом для беспокойства/беспокойства для клиента, покупающего новое программное обеспечение. Часто вы увидите 64-битную информацию, указанную по этой причине. Обычно это означает только 64-битную совместимость.

Теперь есть несколько 64-битных приложений (флеш-плеер и google earth top мой список), которые не могут прийти достаточно скоро.

Ответ 6

Здесь одна из причин: интеграция с 64-битными приложениями, например, с написанием расширения оболочки. 64-битный процесс не может напрямую загружать 32-разрядную DLL, поэтому вам также нужно сделать 64-разрядную версию.