Есть ли большие преимущества того, чтобы его приложения на С++ работали в режиме 64 бит?

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

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

Мне интересно, могу ли я получить некоторые преимущества/производительность для создания приложений в режиме 64 бит, а не в 32 бит

Изменить:

Как правило, в каком виде программного обеспечения будет полезен увеличение числа регистров?

Ответы

Ответ 1

Биты

64 (x86_64) теперь являются основными. 2 больших преимущества здесь:

  • Доступно больше памяти без каких-либо трюков
  • Более общие и дополнительные регистры процессора

Но у вас есть небольшой недостаток:

  • Больше потребления памяти (обычно 20-30% больше 32 бит)

Я думаю, что Google Chrome работает в 32-битном режиме в Windows, потому что есть слишком много 32-битных плагинов (например, Flash). Также есть версия linux для 64 бит.

Изменить для дополнительного вопроса

Как правило, вы получите преимущества, если ваше приложение использует математику (64-разрядную целочисленную арифметику), кодирование/кодирование/упаковку/распаковку, криптографию.

Также посмотрите руководство IBM для разработчиков решений для 64-разрядных вычислений http://www.onitecservice.com.br/produtos/arquiv_pdf/nocona64bit_onitec_service.pdf

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

В зависимости от наибольшей пользы, наименьшее преимущество:

  • I/O интенсивный - любое приложение, которое тратит больше времени на получение данных с устройств, чем его обработка: база данных, электронная коммерция, CRM, ERP, SAP, SAS, различные бизнес-критические и вертикальные приложения и любое другое приложение с большими требованиями к памяти. В В общем, эти приложения должны увидеть значительные улучшения производительности от 64-битных аппаратные средства, операционные системы и драйверы устройств, а также устранение памяти наложения и другие ингибиторы производительности.
  • Высокопроизводительные вычислительные вычисления (HPC) и научно-технические вычислительные системы, включая биологические науки, геофизические исследования; рендеринг высококачественных графических изображений; потоковое видео и любое другое приложение, которое тратит больше времени на обработку данных, чем их извлечение.
  • Шлюз/инфраструктура безопасности - серверы SSL, службы каталогов, кеширование в Интернете и базы данных. Эти приложения могут получить выгоду от коммутатора. Вам следует свяжитесь с отдельными поставщиками программного обеспечения, чтобы узнать их планы по использованию 64-битных функций.
  • Стандартная инфраструктура. Этот класс, как правило, мало пользы от 64-разрядных вычислений. Приложения включают в себя серверы файлов и печати, низкоуровневые/некритические бизнес-приложения и устаревшие приложения, которые вряд ли будут перезаписаны для 64 бит.

Ответ 2

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

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

Попробуйте выполнить "реальный мир" - скомпилируйте как в 64-х, так и в 32-битных, и составите некоторые диаграммы производительности. Я сделал это в приложении, и он показал повышение производительности на 20% (более быстрый расчет), и объем данных, которые программа могла загружать, внезапно казалась "бесконечной".

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

Ответ 3

Shamlessly просто сканируется http://en.wikipedia.org/wiki/64-bit Есть плюсы и минусы, для получения подробной информации, посмотрите на эту страницу в Википедии. Как указано там, главным преимуществом для 64-битных версий приложения является возможность доступа к большему количеству регистров в архитектуре x86-64.

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

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