DEV Community

Muhammed H. Alkan
Muhammed H. Alkan

Posted on

Extend is sometimes faster than Append

I just was comparing the performance difference between [].append(x) and [] + [x]. I just realized [].append(x) was faster. But when i tried it with [].extend([x]) is faster. You just can use it while optimizing your code. Do not use it while you're coding, but when you're going to optimize it use [].extend([x]). Simple benchmarks

>>> import timeit
>>> start = timeit.timeit()
>>> [1, 2, 3, 4] + [5]
[1, 2, 3, 4, 5]
>>> end = timeit.timeit()
>>> end - start
0.006420466001145542
>>> start = timeit.timeit()
>>> [1, 2, 3, 4].append(5)
>>> end = timeit.timeit()
>>> end - start
0.004373588995804312
>>> start = timeit.timeit()
>>> [1, 2, 3, 4].extend([5])
>>> end = timeit.timeit()
>>> end - start
0.0022365170007105917

Results for the first benchmark

Fastest: [1, 2, 3, 4].extend([5])
0.0022365170007105917 seconds

Medium: [1, 2, 3, 4].append(5)
0.004373588995804312 seconds

Slowest: [1, 2, 3, 4] + [5]
0.006420466001145542 seconds

Second benchmarks from CLI

lambdef ~ λ python -mtimeit -s'[1, 2, 3, 4] + [5]'
100000000 loops, best of 3: 0.00939 usec per loop
lambdef ~ λ python -mtimeit -s'[1, 2, 3, 4].append(5)'
100000000 loops, best of 3: 0.00938 usec per loop
lambdef ~ λ python -mtimeit -s'[1, 2, 3, 4].extend([5])'
100000000 loops, best of 3: 0.00993 usec per loop

Results for the second benchmark

Fastest: [1, 2, 3, 4].append(5)
100000000 loops, best of 3: 0.00938 usec per loop

Medium: [1, 2, 3, 4] + [5]
100000000 loops, best of 3: 0.00939 usec per loop

Slowest: [1, 2, 3, 4].extend([5])
100000000 loops, best of 3: 0.00993 usec per loop

So when you add items continuously, you should prefer .append(), otherwise you should use .extend().

Oldest comments (0)