Есть ли преимущества в использовании Python X86-64 на 64-битном процессоре в 64-битной ОС? - PullRequest
24 голосов
/ 31 декабря 2010

Какие преимущества дает сборка amd64 Python и расширений?(Множество расширений скомпилировано для amd64 здесь .) У меня есть процессор i5 и 64-битная Win7, так что кажется, что это будет уместно.Но это также звучит так, как будто глючит, бета, не поддерживается и т. Д.

На самом ли деле это дает выигрыш в производительности?В каких областях?Я использую SciPy, NumPy и т. Д. Иногда я получаю ошибки «недостаточно памяти» с 32-разрядным Python, и на моей машине установлено 4 ГБ ОЗУ.

Можно ли устанавливать пакеты win32 на 64-разрядныеPython base, если 64-битная версия пакета не существует?

Ответы [ 5 ]

23 голосов
/ 31 декабря 2010

Основное обоснование для использования 64-битного Python заключается в том, что вы можете получить доступ к более чем 2 ГБ основной памяти, например, если у вас большие диктовки, списки или длинные строки.Это требует, чтобы у вас на самом деле было столько памяти в вашей системе, чтобы быть практичным.

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

Python в 64-битном режиме в Windows, безусловно, не является бета-версией или не поддерживается.Он может содержать ошибки, но только если у вас действительно очень большие структуры данных.64-битному Python уже около 15 лет (но не в Windows).

6 голосов
/ 31 декабря 2010

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

5 голосов
/ 31 декабря 2010

Обычный выигрыш при использовании 64-битного кода в целом. Я не нашел каких-либо недавних тестов, но во время введения x64 код мог работать на 30% быстрее на 64-битной, чем на 32-битной на x86-оборудовании - этот разрыв, безусловно, как-то уменьшился с оптимизацией с тех пор, но все еще вероятно быстрее.

Кроме того, вы также можете использовать более 4 ГБ памяти, если вам это тоже нужно.

Обратите внимание, однако, что прирост скорости в 64-битной системе обусловлен прекрасным 32-битным устаревшим ABI: у ядра i7, работающего в 32-битной системе, есть те же 4 регистра общего назначения (и пара других), которые были в чипе 80386 1987 года. И те, которые наносят на карту 1: 1 в регистр на 8086 с 70-х годов. В 64-битном интерфейсе abi представлено больше (реальных) регистров общего назначения, что делает его более быстрым. В противном случае 64-битный код просто тратит вдвое больше кэш-памяти, что делает его в других архитектурах, таких как PPC, фактически медленнее, чем 32-битный код.

4 голосов
/ 31 декабря 2010

Я уже много лет использую 64-битный Python на Linux. Нет проблем, это не глючит. Это включает в себя NumPy. Я бы не волновался об этом.

Одно небольшое преимущество:

Python> sys.maxint
9223372036854775807

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

Вы получаете наибольшую выгоду при работе с очень большими объемами данных.

0 голосов
/ 31 декабря 2010

Я полагаю, что вы получите увеличение производительности с SciPy и NumPy, поскольку обработка чисел и вычисления значительно улучшаются, когда вы добавляете больше битов в процессор.Но я не могу быть уверен.

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

...