Estoy aprendiendo Python recientemente, y estoy haciendo muchas prácticas con el idioma.En python, ¿por qué la lectura de una matriz es más lenta que la lectura de la lista?
Una cosa que me pareció interesante es que, cuando leo de una matriz, es casi la mitad de las veces más lenta que la lista. ¿Alguien sabe por qué?
aquí es mi código:
from timeit import Timer import array t = 10000 l = range(t) a = array.array('i', l) def LIST(): for i in xrange(t): l[i] def ARRAY(): for i in xrange(t): a[i] print Timer(LIST).timeit(1000); print Timer(ARRAY).timeit(1000);
la salida es:
0.813191890717 1.16269612312
matriz que indica que la lectura es más lenta que la lista. Creo que la matriz es una memoria de tamaño fijo, mientras que la lista es una estructura dinámica. Así que asumí que la matriz sería más rápida que la lista.
¿Alguien tiene alguna explicación?
posible dupe/answer: http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use - Básicamente array.array es un contenedor alrededor de una matriz C así que creo que hay sobrecarga al acceder a ella. No lo use para matemáticas. –
Intentar adivinar las eficiencias de Python, especialmente para aquellas que provienen de un fondo tipo C, a menudo no es intuitivo. Código claramente primero, luego optimice si mide un problema de rendimiento; esto también se aplica a C, pero debido a que los elementos del lenguaje están tan cerca de la máquina, la gente suele olvidar. – msw
Para matemáticas puede usar numpy (aún no disponible para python 3), solo Dios sabe por qué numpy no es una biblioteca estándar. –