Est-il rien de plus rapide que le dict()?

J'ai besoin d'un moyen plus rapide pour stocker et accéder à autour de 3 go de k:v paires. Où k est un string ou un integer et v est un np.array() qui peut être de différentes formes.
Est-il un objet, qui est plus rapide que le standard de python dict dans le stockage et la consultation d'un tel tableau? Par exemple, a pandas.DataFrame?

Autant j'ai compris python dict est une mise en œuvre rapide d'une table de hachage, il n'y a rien de mieux que pour mon cas précis?

  • Si votre utilisation de Python 3.5 ou plus bas, alors le dictionnaire construit en Python 3.6 est dit que 20 à 25% plus rapide que l'ancien dictionnaire intégré en Python 3.5. De sorte que vous pouvez obtenir de meilleures performances à l'aide de La dernière version stable de Python.
  • À moins que votre code n'a pas faire autre chose, je serais très surpris si le dictionnaire de l'accès est votre goulot d'étranglement. Avez-vous des informations de profilage montrant ce est le problème?
  • Je pense que dict sont assez rapide. Au lieu de trouver l'alternative, vous pouvez prendre dans l'optimisation reste de ton code 🙂
  • Si votre cas d'utilisation impliqués échange -- si votre structure de données de plus de RAM disponible, alors il serait la meilleure des réponses, mais il n'est pas clair si c'est le cas.
  • c'est dans la configuration de la mémoire, je suis en attente pour la libération de 3.6 en décembre pour ajouter un peu de timing pour la vitesse d'exécution (et il peut effectivement présenter un léger ralentissement si ma compréhension est correcte).
  • mon code ne passe en boucle sur les dict beaucoup de temps
  • c'est pour passée commande dict seulement...
  • Avez-vous besoin d'une boucle pour être plus rapide? Quels sont exactement ce que tu fais avec les données lorsque vous itérer à travers elle? Il n'y a pas de contexte à cette question; "Est-il rien de plus rapide que la dict()?" en fait quoi exactement?
  • en accédant à la k:v paires. Est-il le meilleur objet pour la tâche? Est-il quelque chose de plus rapide, plus efficace en terme de mémoire, etc... bien sûr, le but est de passer en boucle aussi vite que possible.
  • si votre code ne passe en boucle sur les dict, il est facile de le rendre plus rapide -- supprimer la boucle! Mais si votre code ne quelque chose à l'intérieur de la boucle (à dire d'impression, ou trouver le maximum de la valeur, ou quoi que ce soit d'autre que pass), puis si cela prend plus de temps que le dictionnaire de l'accès (et ce sera certainement le cas), l'amélioration de la dict l'accès ne sera pas améliorer votre performance nette du tout. À ce stade, vous allez avoir à montrer un peu de code si vous voulez de vrais conseils.
  • Est-il possible que vous pouvez vectoriser il? Quelles sont les opérations réalisées sur les données? Il est également intéressant de souligner que DataFrames sont beaucoup plus facile et, je crois, plus rapide, éventuellement, d'en magasin.
  • {'some_string':np.array(), ...} comment feriez-vous pour vectoriser ce? Les matrices sont de forme différente.
  • Pourquoi êtes-vous accéder à l'valeurs? Que faites-vous avec eux? Pourquoi ne pas inclure votre code jusqu'à présent?
  • Je ne suis pas en supposant que boucler sur la dict est le goulot d'étranglement de mon code. Cependant, depuis mon code pour accéder à ce dictionnaire de plus de et plus je me demande si il n'y a rien de mieux que le dict. Je ne suis pas intéressé par d'autres moyens d'accélérer mon code.

InformationsquelleAutor alec_djinn | 2016-11-19