Есть ли какие-то большие преимущества в том, что его приложения для разработки на C ++ работают в 64-битном режиме? - PullRequest
15 голосов
/ 08 января 2012

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

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

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

Редактировать:

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

Ответы [ 3 ]

8 голосов
/ 08 января 2012

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

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

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

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

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

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

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

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

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

В порядке от наибольшей до минимальной выгоды, типы:

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

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

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

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

0 голосов
/ 08 января 2012

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

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

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

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

...