Skip to content

Instantly share code, notes, and snippets.

@renankof
Last active January 23, 2019 12:51
Show Gist options
  • Save renankof/cfcf47ec716cf03b609f6885327860d7 to your computer and use it in GitHub Desktop.
Save renankof/cfcf47ec716cf03b609f6885327860d7 to your computer and use it in GitHub Desktop.
Comparativo entre set Intersection e buscas em diferentes representações de dados Python3.
#!/usr/bin/python3
import random
import time
row_count = 10000000
my_list = {random.randint(0, 2000): random.randint(0, 255) for i in range(row_count)}
my_list2 = {random.randint(0, 2000): random.randint(0, 255) for i in range(row_count)}
def teste():
start = time.time()
result = {}
# dict
for x in my_list:
if x in my_list2:
result[x] = my_list[x]
end = time.time()
t1 = end - start
# set com intersection
start = time.time()
result = {}
my_list_set = set(my_list)
my_list2_set = set(my_list2)
inter = my_list_set.intersection(my_list2_set)
for x in inter:
result[x] = my_list[x]
end = time.time()
t2 = end - start
# set direto
start = time.time()
result = {}
my_list_set = set(my_list)
my_list2_set = set(my_list2)
for x in my_list_set:
if x in my_list2_set:
result[x] = my_list[x]
end = time.time()
t3 = end - start
# tupla
start = time.time()
result = {}
my_list_set = set(my_list)
my_list2_tuple = tuple(my_list2)
for x in my_list_set:
if x in my_list2_tuple:
result[x] = my_list[x]
end = time.time()
t4 = end - start
# lista
start = time.time()
result = {}
my_list_set = set(my_list)
my_list2_list = list(my_list2)
for x in my_list_set:
if x in my_list2_list:
result[x] = my_list[x]
end = time.time()
t5 = end - start
return t1, t2, t3, t4, t5
t1 = 0
t2 = 0
t3 = 0
t4 = 0
t5 = 0
n_tests = 1000
for x in range(0, n_tests):
aux1, aux2, aux3, aux4, aux5 = teste()
t1 += aux1
t2 += aux2
t3 += aux3
t4 += aux4
t5 += aux5
print("Media de tempo For normal DICT: %s " % (t1/n_tests))
print("Media de tempo SET: %s " % (t2/n_tests))
print("Media de tempo SET IF: %s " % (t3/n_tests))
print("Media de tempo TUPLE: %s " % (t4/n_tests))
print("Media de tempo LIST: %s " % (t5/n_tests))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment