Влияние на использование long против int в Python - PullRequest
5 голосов
/ 12 января 2012

Мне нужно манипулировать большими числами в Python, которые вписываются в 64 бит.В настоящее время мой код работает на 64-битной платформе, но существует небольшая, но очевидная вероятность того, что он будет работать на 32-битной платформе.Следовательно, я бы предпочел использовать тип long для представления своих чисел.Я понимаю, что это влияет на производительность при использовании типа long сверх int.Насколько плохо?Я буду выполнять много делений и умножений на них, но результаты также должны вписываться в 64 бита.

Ответы [ 2 ]

3 голосов
/ 12 января 2012

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

Существует несколько подходов для этого, используя numpy, cython, aРасширение C, запускающая вашу программу с использованием pypy вместо стандартного cpython, и даже взгляните на corepy - что вам не следует делать, так это выполнять задачи с интенсивным числовым исполнением на чистом python, если проблема заключается в производительности.Если он наиболее сложный из них - создание расширения C в виде одной функции, которая просто выполняет вычисления, достаточно просто, чтобы в этом случае оправдать выигрыш в производительности.

3 голосов
/ 12 января 2012

Если вы собираетесь делать много сложных вычислений, взгляните на «numpy».

...