deque.popleft() vs list.pop(0), performance analysis

Viewed 1107

According to this question, I checked the performance on my laptop.

Surprisingly, I found that pop(0) from a list is faster than popleft() from a deque stucture:

python -m timeit 'l = range(10000)' 'l.pop(0)'

gives:

10000 loops, best of 3: 66 usec per loop

While:

python -m timeit 'import collections' 'l = collections.deque(range(10000))' 'l.popleft()'

gives:

10000 loops, best of 3: 123 usec per loop

Moreover, I checked the performance on jupyter finding the same outcome:

%timeit l = range(10000); l.pop(0)

10000 loops, best of 3: 64.7 µs per loop

from collections import deque
%timeit l = deque(range(10000)); l.popleft()

10000 loops, best of 3: 122 µs per loop

What is the reason?

1 Answers
Related