Selon this question, j'ai vérifié les performances sur mon ordinateur portable.deque.popleft() vs list.pop (0), analyse de la performance
Étonnamment, je trouve que pop(0)
d'un list
est plus rapide que popleft()
d'un deque
stucture:
python -m timeit 'l = range(10000)' 'l.pop(0)'
donne:
10000 boucles, le meilleur de 3: 66 USEC par boucle
tandis que:
python -m timeit 'import collections' 'l = collections.deque(range(10000))' 'l.popleft()'
donne:
10000 boucles, le meilleur de 3: 123 USEC par boucle
De plus, j'ai vérifié la performance sur jupyter trouver le même résultat:
%timeit l = range(10000); l.pop(0)
10000 boucles, le meilleur de 3: 64,7 ps par boucle
from collections import deque
%timeit l = deque(range(10000)); l.popleft()
10000 boucles, le meilleur de 3: 122 ms par boucle
Quelle est la raison?
Voulez-vous dire qu'une analyse correcte devrait considérer la création de la deque juste une fois plutôt que n fois? – Ale
@Ale: oui, créez-le une fois. Sauf si vous voulez mesurer la création + pop. J'ai édité mon post pour montrer une approche en ligne de commande (fait quelques recherches entre-deux) –