Introduction

Récemment, une pull request a été ouverte sur le projet Matplotlib pour améliorer les performances en remplaçant np.column_stack par np.vstack().T. Cette modification vise à accélérer les opérations de traitement de données en exploitant les avantages de la mémoire contiguë.

Contexte Technique

La fonction np.column_stack est utilisée pour empiler des tableaux verticalement, mais elle a l'inconvénient de créer des copies de données en mémoire, ce qui peut entraîner des pertes de performances. En revanche, np.vstack().T permet de réaliser la même opération en exploitant la mémoire contiguë, ce qui est plus efficace. Cependant, cette substitution n'est possible que pour les cas où les tableaux sont des tableaux 1D de même longueur.

Analyse et Implications

L'analyse des performances montre que np.vstack().T est plus rapide que np.column_stack, avec des temps d'exécution de 27,67 us contre 36,47 us avec diffusion, et de 13,18 us contre 20,63 us sans diffusion. Les modifications apportées concernent les fichiers lines.py, path.py et patches.py, où les appels à np.column_stack ont été remplacés par np.vstack().T pour les cas où les tableaux sont 1D. Cela a également permis de résoudre une erreur de construction dans le fichier colors.py.

Perspective

Il est important de noter que la substitution de np.column_stack par np.vstack().T nécessite une attention particulière pour les cas où les tableaux ont des dimensions différentes ou sont 2D, car les comportements peuvent différer. Il faudra surveiller les performances et les comportements de ces modifications pour s'assurer qu'elles n'introduisent pas de régressions. De plus, il serait intéressant d'explorer d'autres optimisations de performances possibles dans le projet Matplotlib.