2012-01-12 16 views
5

Necesito manipular números grandes en Python que caben en 64 bits. Actualmente, mi código se está ejecutando en una plataforma de 64 bits, pero existe la posibilidad pequeña pero distinta de que deba ejecutarse en una plataforma de 32 bits. En consecuencia, preferiría usar el tipo long para representar mis números. Entiendo que hay un impacto en el rendimiento al usar long sobre el tipo int. ¿Qué tan malo es? Realizaré muchas divisiones y multiplicaciones sobre ellos, pero los resultados también deberían encajar en 64 bits.Repercusión en el rendimiento del uso de long vs. int en Python

+1

¿Python no maneja esto - y arbitrariamente grandes números también - automágicamente? –

+2

puede crear un perfil de su código utilizando el módulo timeit – TJD

+1

¿Qué versión de Python está usando? Si está usando una versión 3.x, entonces vea: PEP 0237: Esencialmente, renombrado por mucho tiempo a int. Es decir, solo hay un tipo integral incorporado, llamado int; pero se comporta principalmente como el antiguo tipo largo. – Yuushi

Respuesta

3

Si va a hacer un gran número de crujidos, eche un vistazo a "numpy".

3

Si su programa realiza una gran cantidad de cálculos numéricos, hasta el punto de que el rendimiento importa, debe perfilarlo y hacer que la parte numérica se ejecute en código nativo. No debería preocuparse si internamente los números son "enteros" o "largos" de Python, tanto que Python 3 elimina la diferencia de tipo.

Hay varios enfoques para ello, desde usar numpy, cython, una extensión C, ejecutar tu programa usando pypy en lugar del cpython estándar, e incluso echar un vistazo a corepy: lo que no debes hacer es tener un numérico tarea intensa ejecutándose en python puro si el rendimiento es un problema allí. El evento más complicado de estos: crear una extensión C en forma de una función única que solo realice los cálculos es lo suficientemente simple para que valga la pena el aumento del rendimiento en este caso.

Cuestiones relacionadas