Зависит ли скорость консольного приложения C / C ++ от Windows от цели 32 или 64 бит? - PullRequest
0 голосов
/ 17 июня 2010

Предполагая, что память не является проблемой, делает ли таргетинг на 64-битную ОС консольным приложением C / C ++ для Windows быстрее?

Обновление : в ответ на несколько комментариев / ответов приложение использует статистические алгоритмы (например, линейную алгебру, рисование случайных чисел и т. Д.).

Ответы [ 6 ]

3 голосов
/ 17 июня 2010

Отвечая в основном на редактирование, а не на оригинальный вопрос: я портировал одно приложение с большой статистикой и (особенно) линейной алгеброй для запуска в качестве 64-битного кода. Для этого кода усилия были минимальными, и мы получили улучшение скорости в 3: 1.

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

3 голосов
/ 17 июня 2010

Ответ может быть. Вы должны измерить.

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

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

1 голос
/ 17 июня 2010

Ответ большой. Может быть.

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

Эти и многие другие факторы, безусловно, приведут к изменению производительности вашего приложения.Будь то тонкое, огромное, лучшее, худшее и т. Д. ... будет зависеть от типа приложения, которое вы пишете.Здесь невозможно дать общий ответ без подробностей.

0 голосов
/ 17 июня 2010

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

0 голосов
/ 17 июня 2010

Возможно, медленнее - вы только что фактически сократили размер кеша процессора вдвое

Конечно, инженеры Intel и AMD знают об этом, поэтому менеджер памяти проделывает большую работу, чтобы уменьшить влияние 64-битных указателей и целых чисел, где используются только младшие 32-битные

0 голосов
/ 17 июня 2010

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

Но другие факторы(например, накладные расходы WOW) могут доминировать ...

Единственным способом будет тестирование вашего приложения на целевом оборудовании.

...