Разница в производительности между 32-битными и 64-битными версиями приложений очень сильно зависит от их типа и типов данных, которые они обрабатывают. Но в среднем можно ожидать прирост в пределах 2-20% от простой перекомпиляции программы, что объясняется рядом архитектурных изменений в 64-битных процессорах [1].
Увеличение числа регистров общего назначения в таких процессорах позволяет оптимизировать в функциях работу с локальными переменными, которые более не требуется сохранять в оперативной памяти. Несколько аргументов функций передается через регистры, что также сокращает время их вызова [2].
Расширенное адресное пространство снимает ограничение на объём используемой оперативной памяти в 4 гигабайта, характерное для 32-разрядной архитектуры. Возможность хранить весь необходимый набор данных в оперативной памяти исключает крайне медленные операции подкачки данных с диска, что для ряда программ, работающих с большими массивами данных, позволит достигнуть прирост производительности в несколько раз.
Mac OS Big Sur — запуск 32 битных приложений
Обратной же стороной перехода к 64-битной версии является увеличение размеров указателей и некоторых других типов данных в два раза, что может вызвать рост требований ПО к оперативной памяти системы. В ряде случаев, это может даже замедлить скорость работы 64-битного приложения, по сравнению с 32-битным. Однако это редкая ситуация и как правило они обусловлены неудачным выбором формата хранимых в программе данных.
Следует также заметить, что при запуске 32-битных версий ПО на 64-битных системах семейства Windows, старые 32-битные приложения будут выполняться чуть медленнее, из-за подсистемы WoW64, эмулирующей 32-битное окружение. В среднем потери для программ из-за этой прослойки WoW64 составят 2-3%, хотя в отдельных случаях это значение может быть гораздо больше.
Библиографический список
- Андрей Карпов. Оптимизация 64-битных программ.
- Блог компании ООО «СиПроВер». Причины, по которым 64-битные программы требуют больше стековой памяти.
- Обсуждение на сайте Stackoverflow.com. Are 64 bit programs bigger and faster than 32 bit versions?
- База знаний. Какими преимуществами обладают 64-разрядные процессоры по сравнению с 32-разрядными?
Источник: pvs-studio.ru
Почему все прекращают поддержку 32-битных систем?
Первой поддержку 32-битных сборок прекратила Apple для операционной системы Mac OS. А начиная с Mac OS 10.15 Catalina запрещён запуск 32-битных приложений. Далее от 32-битных редакций стали отказываться RedHat, Fedora (RedHat Community), Deepin, SUSE, Ubuntu, Mint. Последними сдались Microsoft, и Windows 11 не имеет 32-битной версии. На днях и OpenSUSE прекратил поддержку 32-битных сборок.
Такими темпами, скоро из 32-битных останутся только Arch Linux, Slackware, да Gentoo.
Почему все отказываются от выпуска 32-битных операционных систем? Какие ещё есть варианты?
Какая разница между windows 32 bit и 64 bit
- Вопрос задан 22 янв.
- 851 просмотр
6 комментариев
Простой 6 комментариев
а смысл в них, если последние 10 лет 99% процессоров поддерживают 64 бита ?
Первой поддержку 32-битных сборок прекратила Apple для операционной системы Mac OS. А начиная с Mac OS 10.15 Catalina запрещён запуск 32-битных приложений.
не Mac OS а macOS, семейство Mac OS последний выпуск был в 2002 году.
macOS Catalina выпуск 7 октября 2019
Такими темпами, скоро из 32-битных останутся только Arch Linux, Slackware, да Gentoo.
эмм, ArchLinux вообще чуть ли не самым первым отказался от 32-bit, оставив только 64-битную поддержку своей платформы, и это произошло еще в 2017 — The end of i686 support
Всё просто! Вам надо вернуться назад, лет 20 наверное, и пересесть в ту мультивселенную, в которой не изобрели 64bit.
ArchLinux вообще чуть ли не самым первым отказался от 32-bit
добавлю что для обычных офисных приложений которые нормально себя чувствовали в объеме памяти 2Гб ничего не улучшилось а скорее наоборот. Разрядность указателя внутри стурктур данных стала заметно больше. Программисты С++ хорошо секут эту тему. Это означает что все структуры (struct) и классы стали толще безо всякой причины и стали хуже попадать в кеш-линию.
Деревья, списки и графы, все стало рыхлое как мочалка и бесполезное. Вот цена за огульный переход на другую разрядность указателя. Приложения типа движков баз данных скорее выиграли. Они давно стояли в очередь на апгрейд памяти процесса и дождались. А в целом никакой техно-революции не было.
Был просто перерасчет. Раньше платили за одно. А теперь платят за другое.
рачик всегда был «в перди плонеты всей» 🙂
Drno, смысл есть. огромное количество прикладных приложений не требовало даже гига памяти.
а PAE-шных 64гб системной ram хватит я думаю всем приложениям (акромя СУБД).
mayton2019, странное дополнение к моему высказыванию
я лишь указал на временные рамки отказа от 32-bit для определённой системы и то только из за того что автор вопроса это не совсем верно указал.
вы же, на скока я понимаю, в своём дополнение пытаетесь сделать акцент на том что отказ от 32-bit это в основном плохо, так как если 32-bit хороши для одних систем а 64-bit для других то и совмещать их область применения для унификации плохо.
(надеюсь теперь понятно почему я написал вначале что ваше дополнение странное, так как с моей стороны говорилось просто о временном периоде, а с вашей стороны о том что плохого или хорошого в 32/64-bit приложениях, своё дополнение вам лучше было бы добавить к своему же ответу )
Хорошо, давайте тогда и я добавлю дополнение к вашему добавлению.
Я думаю что всё таки стоит разделять переход на 64-bit системы и отказ от поддержки 32-bit приложений, причем первое совсем не означает отказ от второго, хотя в какой-то степени и стимулирует к этому. Переход на 64-bit системы, даже для пользователей в плане потребления системных ресурсов, практически незаметен, что же касается приложений то здесь двояко, так как с одной стороны это снимает многие ограничения, а с другой стороны видя такой простор разработчики этих самых приложений ни в чем себе не отказывают, за счет пользовательских ресурсов естественно, ярким тому примером являются браузеры, которые с лёгкостью могут выжирать ресурсов которых хватило бы и десятке полноценно работающим системам; всё это привело к тому что большинство разработчиков приложений вместо оптимизаций занимаются эффективной утилизацией пользовательских ресурсов. Возвращаясь к Арчу, помимо той же macOS Catalina где согласно вики:
32-битные приложения больше официально не запускаются и не поддерживаются. Неофициально рекомендуют поставить для их запуска виртуальную машину, либо откатиться на одну из предыдущих версий системы.
, в арче отказа от запуска 32-bit приложений небыло и например скомпилировать и запустить тот же 32-bit firefox из аура не является проблемой.
Решения вопроса 0
Ответы на вопрос 5
Bigdata Engineer
Во первых — никто не прекращает. Есть огромный сегмент микропроцессоров малого энергопотребления которые так и останутся 32х битными. Микроконтроллеры и прочее. И операционки и прошивки и код вообще для них как писался так и пишется. И я думаю что такой класс оборудования будет существовать всегда.
Нет смысла его каким-то образом хоронить.
По поводу адресации 64х бит. Насколько я помню адресные линии современных процессоров материнских плат так и не достигли этого размера. Что такое вообще — полный объем памяти с 64х битами — это больше чем во всех датацентрах вместе взятых. Посчитайте сами. Простая арифметика. Каждый бит — удваивает количество железа на борту. Сколько щас Intel Core способен адресовать?
Я не помню. Пускай знающие подскажут.
Тоесть когда мы говорим 64 бит — то надо уточнять какие на самом деле биты имееются в виду. Доступная память для процесса? Ну да. Может быть.
IBM в 20м веке выпускала железки с 128 битной адресацией но там смысл указателя был немного более сложный. Что-то вроде бесконечной виртуальной ленточной памяти.
А 64х разрядные регистры были еще у первых Pentium MMX в 90х. Но это не имело отношения к адресации памяти.
Ответ написан 22 янв.
Комментировать
Нравится 3 Комментировать
Работаю с Python/Django
Все дело в ограничениях. 32-битные приложения ограничены как минимум в максимальном потреблении оперативной памяти — а именно 4-мя гигабайтами. При условии что пк минимум с 8-ю гигами можно купить очень дёшево (особенно если смотреть в сторону набитых под завязку 775), то намеренно ограничивать функционал смысла нет.
Ответ написан 22 янв.
Нравится 2 1 комментарий
32битные системы имеют расширение памяти до 40 бит.
есть огромное количество приложений которым и 4 гб с лихвой хватает.
у меня на работе куча старых 32 битных компов, из них собрал два сетевых хранилища, 32бит для такого хватает за глаза.
еще один работал как роутер между локалкой и интернетом. на нем вообще стояло 2х1гиговыйх планки и то ни разу не заполнились. но пришлось заменять его.
ну а для современных мультимедийно засранных сайтов в купе с прожорливым хромом — тут да, никакой памяти не хватит.
ты даже не представляешь сколько памяти стоит на системах АСУТП 🙂 и насколько важные задачи эти малявки обрабатывают.
Жил-был у бабушки серенький троллик.
Потому что это мозговыворачивающий трах — поддерживать две линии библиотек. 32-битная адресация скоро останется только в микроконтроллерах.
Ответ написан 22 янв.
Нравится 1 3 комментария
Потому что это мозговыворачивающий трах — поддерживать две линии библиотек.
Так поддерживают PowerPC, ARM64 и MIPS.
32-битная адресация скоро останется только в микроконтроллерах.
Intel Atom N280 передаёт привет.
WSGlebKavash, ну привет. и что?
Так поддерживают PowerPC, ARM64 и MIPS.
Глеб, тебя отправить поучить разницу между размером адресации памяти и архитектурой системы? 🙂 Ну и кстати — кто поддерживает?
Intel Atom N280 передаёт привет.
Это который 2009 года?
Это мой правильный ответ на твой вопрос
Именно по той же причине, что перестали поддерживать 8-битные системы, а потом и 16-битные. Пришёл черёд 32-битных.
Следующие в очереди на вылет — 64-битные системы
Источник: qna.habr.com
Работают ли 32-битные программы под 64-битной Windows 7
При разработке программного обеспечения часто встречаются ситуации, когда вам нужно использовать файл DLL — динамическую библиотеку. Файлы DLL являются важными компонентами программных систем и используются для хранения кода, который может совместно использоваться различными приложениями. 32-разрядный файл DLL предназначен для работы в 32-разрядной операционной системе, а 64-разрядный файл DLL предназначен для работы в 64-разрядной операционной системе. Однако в некоторых случаях может потребоваться зарегистрировать 32-разрядный DLL-файл в 64-разрядной операционной системе. В этой статье рассматривается процесс регистрации 32-разрядной библиотеки DLL в 64-разрядной системе.
Понимание разницы между 32-битной и 64-битной
Прежде чем приступить к процессу регистрации 32-разрядной DLL в 64-разрядной системе, важно иметь общее представление о разнице между 32-разрядными и 64-разрядными операционными системами. По сути, разница между ними заключается в том, как они обрабатывают доступ к памяти. 32-разрядная система может получить доступ к памяти объемом до 4 ГБ, а 64-разрядная система может получить доступ к значительно большему объему — до 16 эксабайт. Это делает 64-битную систему более эффективной для обработки больших объемов данных.
Процесс регистрации 32-битной DLL в 64-битной системе
Если вам нужно зарегистрировать 32-разрядную DLL в 64-разрядной системе, вам необходимо использовать 32-разрядную версию инструмента regsvr32.exe. Инструмент regsvr32.exe отвечает за регистрацию и отмену регистрации DLL-файлов в реестре Windows. Однако 64-разрядная версия инструмента regsvr32.exe не работает для регистрации 32-разрядного файла DLL.
Процесс регистрации 32-битной DLL в 64-битной системе можно описать несколькими простыми шагами:
1. Откройте командную строку от имени администратора. Для этого нажмите кнопку «Пуск», найдите «Командная строка», щелкните приложение правой кнопкой мыши и выберите «Запуск от имени администратора».
2. Перейдите в каталог, содержащий 32-разрядный файл DLL, который вы хотите зарегистрировать. Вы можете сделать это с помощью команды cd, за которой следует путь к каталогу.
:/> Windows 10 скачать ISO образ 5.6Gb последняя версия 2021 торрент
3. Как только вы окажетесь в каталоге, введите следующую команду и нажмите Enter:
Примечание. Замените именем 32-разрядного DLL-файла, который вы хотите зарегистрировать.
4. После выполнения команды появится сообщение об успешной регистрации DLL-файла.
5. Вы можете убедиться, что файл DLL был зарегистрирован, запустив тестовое приложение, использующее библиотеку DLL. Если приложение запускается без каких-либо проблем, файл DLL был успешно зарегистрирован.
Регистрация 32-разрядной DLL в 64-разрядной системе может показаться сложным процессом, но время от времени вам может понадобиться это делать. Используя шаги, описанные выше, вы можете быстро и легко зарегистрировать 32-разрядные файлы DLL в 64-разрядной системе. Это гарантирует, что ваши приложения будут работать гладко и без ошибок.
Источник: msconfig.ru