J'ai besoin d'être capable de manipuler une grande (10^7 nœuds) graphique en python. Les données correspondant à chaque nœud/edge est minime, disons, un petit nombre de chaînes. Ce qui est le plus efficace, en termes de mémoire et de la vitesse, façon de le faire?
Un dict des dicts est plus souple et plus simple à mettre en œuvre, mais je intuitivement s'attendre à une liste de listes pour être plus rapide. La liste d'option exigerait aussi que je conserver les données distincte de la structure, tandis que les dicts permettrait de quelque chose de la sorte:
graphe[I][J]["Propriété"]="valeur"
Que suggérez-vous?
Oui, j'aurais été un peu plus clair sur ce que je veux dire par l'efficacité. Dans ce cas particulier, je veux dire en termes d'accès aléatoire de récupération.
Le chargement des données dans la mémoire n'est pas un énorme problème. C'est fait une fois pour toutes. Le temps de la partie est de visiter les nœuds de sorte que je peux extraire l'information et de mesurer les paramètres, je suis intéressé.
Je n'avais pas envisagé de faire chaque nœud une classe (propriétés sont les mêmes pour tous les nœuds), mais il semble que ce serait ajouter une couche supplémentaire de frais généraux? J'espérais que quelqu'un aurait une certaine expérience en direct avec un cas similaire qu'ils pourraient partager. Après tout, les graphiques sont l'un des plus commune des abstractions dans CS.