Skip to content

Instantly share code, notes, and snippets.

@wjandrea
Last active August 16, 2022 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wjandrea/04fefb1db77a2eb47739fa4954705013 to your computer and use it in GitHub Desktop.
Save wjandrea/04fefb1db77a2eb47739fa4954705013 to your computer and use it in GitHub Desktop.
Revised, simplified version of https://stackoverflow.com/a/2612990/4518341
copy.copy: 0.03886294364929199
copy.deepcopy: 2.6126625537872314
list slicing [:]: 0.017081499099731445
list(L): 0.01966571807861328
list comprehension: 0.04840683937072754
list extend: 0.020438432693481445
list append: 0.10321950912475586
generator expression extend: 0.08307862281799316
#!/usr/bin/env python3.10
class new_class:
def __init__(self):
self.blah = 'blah'
if __name__ == '__main__':
import copy
from time import time
num_times = 10_0000
L = [None, 'blah', 1, 543.4532,
['foo'], ('bar',), {'blah': 'blah'},
new_class()]
t = time()
for _ in range(num_times):
copy.copy(L)
print('copy.copy:', time()-t)
t = time()
for _ in range(num_times):
copy.deepcopy(L)
print('copy.deepcopy:', time()-t)
t = time()
for _ in range(num_times):
L[:]
print('list slicing [:]:', time()-t)
t = time()
for _ in range(num_times):
list(L)
print('list(L):', time()-t)
t = time()
for _ in range(num_times):
[i for i in L]
print('list comprehension:', time()-t)
t = time()
for _ in range(num_times):
a = []
a.extend(L)
print('list extend:', time()-t)
t = time()
for _ in range(num_times):
a = []
for y in L:
a.append(y)
print('list append:', time()-t)
t = time()
for _ in range(num_times):
a = []
a.extend(i for i in L)
print('generator expression extend:', time()-t)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment