J'apprends Python récemment, et je pratique beaucoup le langage. Une chose que j'ai trouvé intéressante est que, quand je lis à partir d'un tableau, il est presque la moitié du temps plus lent que la liste. Est-ce que quelqu'un sait pourquoi?En python, pourquoi la lecture d'un tableau est-elle plus lente que la lecture d'une liste?
voici mon code:
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 sortie est:
0.813191890717 1.16269612312
qui indique ce tableau de lecture est plus lente que la liste. Je pense que array est une mémoire de taille fixe, alors que list est une structure dynamique. J'ai donc supposé que le tableau serait plus rapide que la liste.
Est-ce que quelqu'un a une explication?
possible dupe/answer: http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use - Fondamentalement array.array est un wrapper autour d'un tableau C donc je pense qu'il y a frais généraux lors de l'accès. Ne l'utilisez pas pour les maths. –
Essayer de deviner l'efficacité de Python - en particulier pour ceux qui viennent d'un arrière-plan C - est souvent contre-intuitif. Code clairement d'abord, puis optimisez si vous mesurez un problème de performance; cela s'applique également à C, mais parce que les éléments du langage sont si proches de la machine, les gens oublient souvent. – msw
Pour les mathématiques, vous pouvez utiliser numpy (pas encore disponible pour python 3), seul Dieu sait pourquoi numpy n'est pas une bibliothèque standard. –