Comment les tableaux Python / Numpy évoluent-ils avec des dimensions de tableau croissantes?
Ceci est basé sur un comportement que j'ai remarqué lors de l'analyse comparative du code Python pour cette question: Comment exprimer cette expression compliquée à l'aide de tranches numpy
Le problème concernait principalement l'indexation pour remplir un tableau. J'ai trouvé que les avantages de l'utilisation (pas très bonne) des versions Cython et Numpy sur une boucle Python variaient en fonction de la taille des tableaux impliqués. Numpy et Cython connaissent un avantage de performance croissant jusqu'à un certain point (quelque part largement autour de pour Cython et N = 2000 pour Numpy sur mon ordinateur portable), après quoi leurs avantages ont diminué (la fonction Cython est restée la plus rapide).
Ce matériel est-il défini? En termes de travail avec de grands tableaux, quelles sont les meilleures pratiques à respecter pour le code où les performances sont appréciées?
Cette question ( pourquoi mon échelle de multiplication matricielle-vectorielle? ) Peut être liée, mais je suis intéressé à en savoir plus sur les différentes façons de traiter les tableaux à l'échelle Python les uns par rapport aux autres.
la source
Réponses:
Il y a quelques petites choses qui ne vont pas avec cette référence, pour commencer, je ne désactive pas la collecte des ordures et je prends la somme, pas le meilleur moment, mais supportez-moi.
Faut-il s'inquiéter de la taille du cache? En règle générale, je dis non. L'optimiser en Python signifie rendre le code beaucoup plus compliqué, pour des gains de performances douteux. N'oubliez pas que les objets Python ajoutent plusieurs frais généraux difficiles à suivre et à prévoir. Je ne peux penser qu'à deux cas où c'est un facteur pertinent:
Dans les commentaires, Evert a mentionné CArray. Notez que, même en fonctionnement, le développement s'est arrêté et il a été abandonné en tant que projet autonome. La fonctionnalité sera incluse à la place dans Blaze , un projet en cours pour créer une "nouvelle génération Numpy".
la source