64-битные преимущества производительности
Каков источник преимуществ производительности 64-разрядные приложения имеют более 32-разрядные приложения? Я предполагаю, что есть преимущество в производительности, потому что такие программы, как WinRAR, рекламируют его.
Кроме того, можем ли мы получить эти преимущества в производительности, просто переключившись на 64-битный компилятор, или есть ли какие-либо изменения в коде, который нужно сделать?
Приветствуются ответы, связанные с обоим, неуправляемым и управляемым кодом.
Ответы
Ответ 1
Чтобы использовать 64-битную архитектуру новейшего процессора, вам необходимо:
- используйте 64-битный ЦП и ОС
- разрабатывается специально для 64 бит с использованием 64-битного api - реализация должна пройти весь путь до самого базового кода, работающего с регистрами CPU (обычно написанными на ассемблере), чтобы воспользоваться дополнительными регистрами.
- создайте приложение, которое действительно выиграет от дополнительных регистров. WinRAR - это приложение, которое будет в полной мере использовать дополнительные регистры, потому что оно включает в себя множество исчислений со сложными алгоритмами. Если вы вместо этого напишите приложение с очень простыми алгоритмами, для него не потребуется дополнительное адресное пространство регистра, и он не будет работать быстрее на 64-битной
- также учитывайте, что, когда вы используете регистр ЦП, даже если вы не используете полное адресное пространство для значения, оно все равно займет столько места (= 64 бит). Поэтому, написав небольшое приложение в 64-битный, нацеленный на получение оптимизированного кода, просто не сработает. Это приложение займет в два раза больше ОЗУ, чем если бы оно было разработано под 32 бит, и оно может быть еще медленнее. Программирование в 64 бит имеет смысл для приложений с использованием тяжелых алгоритмов или для выделения огромных фрагментов памяти (4Gb - это ограничение для 32-битного приложения).
Ответ 2
Архитектура x64 удваивает количество регистров общего назначения, доступных в архитектуре x86, поэтому компиляторы могут хранить больше данных (очень быстрых) регистров CPU, а не в относительно медленном ОЗУ.
Ответ 3
Когда они перестали лежать в рекламе? Я что-то пропустил?; -)
Основным преимуществом производительности является то, что в 64-битных системах вы можете выделить более 4 ГБ оперативной памяти (фактически на большинстве систем с более чем 2 ГБ) без обмена. Это огромное преимущество в скорости, если вам это нужно.
Таким образом, 64-разрядный дает преимущество, если у вас есть приложения, которым требуется много оперативной памяти (обработка изображений/видео/аудио, моделирование мира/юниверса).
Кроме того, на 64-битных ЦП также есть команды, которые работают с 64-битными типами данных (поэтому вам не нужно эмулировать те, у которых есть 32-разрядные типы). Это также преимущество, но оно а) не так велико, потому что вам нужно использовать эти типы алгоритмов, и большинство из них не б) они все еще медленнее, чем 32-битные (но быстрее эмуляции).
Чтобы дать вам представление, вот старая шутка от суперкомпьютера: "Требуется один день для загрузки данных с дисков, тогда для обработки данных требуется пять минут, а затем нам нужен еще один день, чтобы сохранить результат на диск". Чтение данных из ОЗУ составляет от 1000 до 1000000 раз быстрее, чем доступ к диску.
Таким образом, в целом для среднего пользователя 64-битная система имеет мало преимуществ.
Ответ 4
Мое понимание заключается в том, что в большинстве случаев прироста производительности не существует, кроме возможности использовать больше памяти. (Хотя это может дать более высокую производительность, если вы работаете с 64-битными типами данных, например).
Ответ 5
Здесь есть отличные ответы.
Как было сказано, вы можете получить доступ к неограниченной ОЗУ, что будет способствовать производительности, если вам это нужно.
Я бы смиренно добавил, что если вам это не нужно, но использовать его в любом случае, это повредит производительности.
Никогда не теряйте из виду один из самых старых законов науки:
Природа игнорирует вакуум