Bien le bonjour à tous,
Je donne un coup de main à un collègue qui fait du calcul scientifique en Python. En profilant son programme dont l'execution est trèèèès longue, je me suis rendu compte que la majeure partie du temps etait consacré au produit de matrice, et non à l'inversion comme je l'aurait supposé. Pour vérifier ca, j'ai créé 2 petits programmes et le résultat est assez surprenant :
puis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import numpy as np for i in range(1,1000): a=np.random.rand(300,300) b=np.random.rand(300,300) np.dot(a,b)
(notez que la generation de b n'est pas necessaire dans le second programme, mais je le laisse pour ne pas pénaliser le premier).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import numpy as np for i in range(1,1000): a=np.random.rand(300,300) b=np.random.rand(300,300) np.linalg.inv(a)
Resultat sur le premier programme :
et sur le second :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [203] > time python bench1.py 237.46u 0.08s 3:57.58 99.9%
Donc le 2e est quasiment 4 fois plus rapide ! Est ce que quelqu'un a une explication à ca ? J'ajoute par ailleurs qu'on travaille sur une grosse becane sur laquelle nous ne sommes pas administrateurs...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [204] > time python bench2.py 63.49u 0.05s 1:03.58 99.9%
merci !
Partager