Consumo de memoria de Python: Diccionario VS Lista de tuplas

En este artículo vamos a ver el consumo de memoria en los diccionarios y una lista de tuplas.

Consumo de memoria por dict vs lista de tuplas

El diccionario ocupa mucho más espacio que una lista de tuplas. Incluso un dictado vacío ocupa mucho espacio en comparación con una lista de tuplas.

Ejemplo 1: Como podemos ver claramente, hay una gran diferencia entre el consumo de memoria de ambos tipos de datos cuando ambos están vacíos.

Python3

import sys
 
dict = {}
print(dict)
 
# We will get size of empty dict
print(sys.getsizeof(dict))
 
t1 = ()
d = list(t1)
print(d)
 
# We will get size of empty list of tuples
print(sys.getsizeof(d))

Producción:

{}
240
[]
64

Ejemplo 2: en este ejemplo, por lo tanto, 3-4 elementos en dict y lista de tuplas.

Python3

import sys
 
# for dict
dict = {(1, "G"), (2, "F"), (3, "G")}
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
list1 = (1, 2, 3)
list2 = ("G", "F", "G")
LoT = list(zip(list1, list2))
print(LoT)
print(sys.getsizeof(LoT))

Producción:

{(3, 'G'), (1, 'G'), (2, 'F')}
224
[(1, 'G'), (2, 'F'), (3, 'G')]
112

Nuevamente, podemos comparar que el consumo de memoria es de 224 bytes en dict mientras que 112 para la lista de tuplas.

Ejemplo 3: Consideremos 1-100 elementos en dict y la lista de tuplas y verifiquemos cuál es el resultado.

Python3

import sys
 
# for dict
dict = {}
for i in range(1, 101):
    dict[i] = i
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
lst = list(range(1, 101))
print(lst)
print(sys.getsizeof(lst))

Producción:

{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13 : 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25 , 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38 : 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50 , 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63 : 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75 , 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88 : 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99, 100: 100 }

4704

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 , 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 , 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75 , 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 ]

1008

Para una mayor cantidad de elementos, podemos ver claramente que no hay comparación en el consumo de memoria. dict es casi 4,7 veces la lista de tuplas para solo 100 elementos. Si tenemos miles de elementos para almacenar, solo piense en la memoria tomada por un dict.

Hemos determinado los cambios en el tamaño de ambos objetos después de agregar los elementos que se mencionan a continuación.

Vacío tipos de datos consumo de memoria
64 lista de tuplas aumenta en 64 después de cada 8 elementos
240 dictar aumenta a 368 desde el 6º elemento; 1184 desde el 22º elemento; 2280 del elemento 43; 4704 de 86; 9320 de 171

Publicación traducida automáticamente

Artículo escrito por thenavneet y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *