Qu'est-ce qui est plus efficace en Python en termes d'utilisation de la mémoire et de consommation CPU - Dictionnaire ou Objet?
Contexte: je dois charger une énorme quantité de données dans Python. J'ai créé un objet qui n'est qu'un conteneur de champ. Créer des instances 4M et les mettre dans un dictionnaire a pris environ 10 minutes et ~ 6 Go de mémoire. Une fois que le dictionnaire est prêt, y accéder est un clin d'œil.
Exemple: pour vérifier les performances, j'ai écrit deux programmes simples qui font la même chose - l'un utilise des objets, l'autre un dictionnaire:
Objet (temps d'exécution ~ 18sec):
class Obj(object):
def __init__(self, i):
self.i = i
self.l = []
all = {}
for i in range(1000000):
all[i] = Obj(i)
Dictionnaire (temps d'exécution ~ 12sec):
all = {}
for i in range(1000000):
o = {}
o['i'] = i
o['l'] = []
all[i] = o
Question: Est-ce que je fais quelque chose de mal ou le dictionnaire est-il juste plus rapide qu'un objet? Si effectivement le dictionnaire fonctionne mieux, quelqu'un peut-il expliquer pourquoi?