#!/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))