Там какое-либо основное назначение компилирует Приложение Windows как 64-разрядное?

Я уверенно сказал бы, что 99% приложений, которые мы пишем, не должны обращаться больше чем к 2 ГБ памяти. Конечно, существует большое очевидное преимущество для ОС, работающей 64-разрядный для обращения к большему количеству RAM, но там какая-либо конкретная причина, типовое приложение было бы скомпилировано 64 бита?

22
задан Mr. Boy 25 February 2010 в 13:10
поделиться

12 ответов

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

Редактировать Я нашел некоторые из своих старых записей, когда я изучал некоторые различия в работе нашего продукта с 64-битной сборкой по сравнению с 32-битной. Я проводил тесты на четырехъядерной 64-битной машине. Поэтому возникает вопрос о сравнении яблок с апельсинами, поскольку 32-битная сборка работала в режиме эмуляции. Однако, похоже, что многие вещи, которые я читаю такие как, например, эта, постоянно говорят о том, что падение скорости для WOW64 не является значительным. Но даже если это утверждение не соответствует действительности, ваше приложение почти наверняка будет выполняться на 64-битной ОС. Поэтому сравнение 32-битной сборки с 64-битной на 64-битной машине имеет смысл.

В ходе проведенного мной тестирования (конечно, не всеобъемлющего) я не обнаружил ни одного случая, когда 32-битная сборка была бы быстрее. Однако многие из SQL-интенсивных операций, которые я выполнял (с высокой нагрузкой на процессор и высокой нагрузкой на ввод/вывод), выполнялись на 20%-50% быстрее при использовании 64-битной сборки. Эти тесты включали некоторые довольно "уродливые" SQL-запросы, а также некоторые тесты TPCC с высоким параллелизмом. Конечно, многое зависит от переключателей компилятора, поэтому вам нужно провести собственное тестирование.

19
ответ дан 29 November 2019 в 03:44
поделиться

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

14
ответ дан 29 November 2019 в 03:44
поделиться

x64 имеет на восемь регистров общего назначения больше, которые недоступны при выполнении 32-битного кода. Это в три раза больше (в два раза больше, если считать ESI, EDI, EBP и ESP регистрами общего назначения; я так не считаю). Это может сэкономить много загрузок и сохранений в функциях, использующих более четырех переменных.

10
ответ дан 29 November 2019 в 03:44
поделиться

Не стоит недооценивать маркетинговую ценность предложения собственной 64-битной версии вашего продукта.

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

10
ответ дан 29 November 2019 в 03:44
поделиться

Вы можете рассматривать это как защиту будущего. Это может быть далеко, но представьте несколько лет в будущем, где 64-битные ОС и процессоры будут повсеместно распространены (вспомните, как 16-битные исчезли, когда 32-битные заняли свое место). Если ваше приложение 32-битное, а все ваши конкуренты к тому времени перейдут на 64-битные, ваше приложение может быть воспринято как устаревшее, более медленное или неспособное к изменениям (или обвинено вашими конкурентами). Возможно, даже однажды поддержка 32-битных приложений будет прекращена или неполной (сможет ли Windows 7 нормально работать с 16-битными приложениями?). Если вы уже сегодня создаете 64-битную версию своего приложения, вы избежите этих проблем. Если вы отложите это на потом, вы можете написать гораздо больше кода с момента переноса, и тогда перенос будет еще сложнее.

Для многих приложений нет веских технических причин, но если это просто, то перенос сейчас может сэкономить ваши усилия в будущем.

5
ответ дан 29 November 2019 в 03:44
поделиться

Недавно я прочитал эту статью Оптимизация программного обеспечения на C ++ . В главе 2.3 Выбор операционной системы проводится сравнение преимуществ и недостатков 64- и 32-битной системы с некоторыми конкретными наблюдениями, касающимися Windows.

Марк Уилкинс уже отмечал в этой беседе о дополнительных регистрах для вызовов функций. Еще одно интересное свойство 64-битной системы:

Набор инструкций SSE2 поддерживается на всех 64-битных процессорах и операционных системах.

Инструкции SSE2 могут обеспечить отличную оптимизацию, и они все чаще используются, так что, на мой взгляд, это примечательная особенность.

1
ответ дан 29 November 2019 в 03:44
поделиться

Если вам не нужно расширенное адресное пространство, то работа в 64-битном режиме ничего не дает и имеет некоторые недостатки, такие как увеличение потребления памяти и нагрузки на кэш.

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

1
ответ дан 29 November 2019 в 03:44
поделиться

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

1
ответ дан 29 November 2019 в 03:44
поделиться

Fastcall ускоряет вызов подпрограмм, сохраняя первые четыре параметра в регистрах.

0
ответ дан 29 November 2019 в 03:44
поделиться

Главное - использовать internalPointer () непосредственно на QModelIndex , не имея отношения к QVariant .

class TestModel(QAbstractItemModel):
    def __init__(self, plan):
        QAbstractItemModel.__init__(self)

    def index(self, row, column, parent):
        if not parent.isValid():
            return self.createIndex(row, column, "foo")
        return self.createIndex(row, column, "bar")

    def parent(self, index):
         if index.internalPointer() == "bar":
            return self.createIndex(0, 0, "foo")
        return QModelIndex()

    def rowCount(self, index):
        if index.internalPointer() == "bar":
            return 0
        return 1

    def columnCount(self, index):
        return 1

    def data(self, index, role):
        if role == 0:  # Qt.DisplayRole
            return index.internalPointer()
        else:
            return None
-121--4631621-

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

-121--937295-

За один тактовый цикл можно обрабатывать больше данных, что может повысить производительность приложений, например, шифрования, кодирования видео и т.д.

-3
ответ дан 29 November 2019 в 03:44
поделиться

Я бы сказал, делайте это, только если вам нужно больше 2 ГБ.

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

Итак, если вам это не нужно, основной эффект - сделать ваше приложение немного медленнее и более раздутым без причины.

Тем не менее, со временем вы все равно будете больше заботиться о 64-битной версии, потому что для нее будут написаны все инструменты, библиотеки и т. Д. Даже если ваше приложение может вполне успешно работать в 64 КБ, вы вряд ли будете использовать 16-битный код - выигрыш на самом деле не имеет значения (в любом случае это небольшое быстрое приложение) и, безусловно, перевешивает связанные с этим хлопоты. Со временем мы увидим почти то же самое с 32-битной версией.

6
ответ дан 29 November 2019 в 03:44
поделиться

Когда вы говорите, что 99% приложений не выиграют от 64-бит, это вполне может быть правдой для вас лично, но в течение дня я использую Visual Studio и Xcode для компиляции C++ с большой кодовой базой, поиска в многогигабайтных репозиториях с помощью Google Desktop и Spotlight. Затем я прихожу домой, пишу музыку с помощью секвенсора, используя несколько Гб звуковых библиотек, делаю фотошоп на своих 20 Гб фотографий и, возможно, немного редактирую видео со своими праздничными клипами.

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

0
ответ дан 29 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: