Какова количественная оценка 64-битного кода Visual Studio более 32 бит

Я не являюсь аппаратным парнем, но я знаю, что Microsoft Visual Studio в 64-разрядной версии проблемы отказала Microsoft, заявив, что 64-разрядная версия не будет иметь хорошей производительности.

Две заметные различия между двумя, которые, как я считаю, очевидны, - это база кода. Один из них начался в 1997 году, можно подумать, что это означает, что на стороне Visual Studio больше багажа, меньше возможностей иметь очень современную архитектуру и код приложения, и это может сделать его сложнее, и, возможно, материал может быть создан для выполнения на 32 бит, а для некоторых причина не подходит для 64 бит? Я не знаю.

Visual Studio Code, с другой стороны, представляет собой современное приложение Electron, которое означает, что он в значительной степени просто скомпилировал HTML. CSS и JavaScript. Я делаю ставку на то, что версия Visual Studio Code имеет мало возможностей для препятствий, и хотя производительность может быть не совсем понятной, почему бы и нет?

P.S.

Я все же хотел бы понять, какие области могут быть улучшены в производительности, и если это улучшение незначительно для разработчика. Любая дополнительная информация или интересные факты, которые вы, возможно, знаете, были бы замечательными. Я хотел бы иметь как можно больше информации, и я обновлю вопрос с любыми трудными фактами, которые я раскрываю, которые не упоминаются.

Ответ 1

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

После краткого поиска в VSCode репозитории я не смог найти какие-либо элементы, которые явно используют преимущества 64-разрядных процессоров, которые не удивительно, потому что среда выполнения JavaScript абстрагирует эти низкоуровневые данные от кода.

Учитывая это, любые преимущества, которые мы можем заметить при работе с 64-разрядной версией редактора, аналогичны тем, которые мы увидим при использовании 64-битного веб-браузера. Самое главное, 64-разрядная версия может адресовать более 4 ГБ памяти, что может иметь значение, если нам нужно открыть много файлов одновременно или очень большие файлы или использовать много тяжелых расширений. Итак, самое главное для нас разработчики: у редактора не будет недостатка в памяти при злоупотреблении.

В то время как это звучит как стоимость страховой политики, которую стоит подписать, даже если мы никогда не ударяем эти пределы памяти, помните, что 64-разрядные приложения обычно потребляют больше памяти, чем их 32-разрядные аналоги. Мы можем захотеть выбрать 32-битную версию, если хотим меньшего объема памяти. Большинство разработчиков никогда не смогут попасть в эту стену с 4 ГБ.

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

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

Например, движок JavaScript V8 исторически отключил некоторые оптимизации в 64-битных системах, которые включены сегодня. Определенные оптимизации доступны только в том случае, если операционная система предоставляет им возможности.

Будущие 64-разрядные версии в Windows могут использовать рандомизацию размещения пространства адресов для улучшения безопасности (больше битов в адресном пространстве увеличивает энтропию).

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

Ответ 2

Я не много работал над окнами, но взаимодействовал с процессорами x86, x64 и ARM (как с 32-разрядным, так и с 64-разрядным набором команд). Основываясь на моем опыте, перед написанием кода в 64-битном формате мы подумали: действительно ли нам нужны инструкции размером 64 бит? Если наша операция может быть выполнена в течение 32 бит, то зачем нам нужны еще 32 бита?

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

  • Создайте 64-разрядную версию своей программы и запустите все 32-разрядные инструкции на вашем 64-битном процессоре. (Отбирая 32-разрядные бит или ваш процессор в каждом цикле команд и заполняя счетчик программ адресом с 4 байтами вперед). Ваше приложение/программа, которая могла быть выполнена в 256 МБ ОЗУ, теперь требует 512 МБ, из-за чего пострадают другие программы или процессы, запущенные в ОЗУ.

  • Второй способ: сохранить формат программы до 32 бит и объединить 2 32-битных инструкции для ввода в ваш 64-битный процессор для выполнения.

Очевидно, что второй подход будет работать быстрее с теми же ресурсами.

Но да, если ваша программа содержит больше инструкций, которые действительно являются 64-битными; Напр. Обработка видео 4K (лучше на 64-битном процессоре с 64-разрядным набором команд) или выполнение операций с плавающими точками с точностью до десяти десятичных цифр и т.д. Затем лучше создать 64-битный программный файл.

Короче говоря: попробуйте написать компактное программное обеспечение и использовать как можно больше аппаратное обеспечение.

До сих пор то, что я прочитал Здесь, Here и Здесь; Я узнал, что большинство компонентов VS требуют только 32-битного размера инструкции.

Надеюсь, он объяснит.

Спасибо