Je cherche à optimiser un programme que j'ai écrit et je suis vraiment confronté à des obstacles. J'ai tellement de questions, je ne sais pas par où commencer mais, pour les débutants, je vais essayer de le simplifier à un obstacle que je n'arrive pas à surmonter.Le moyen le plus rapide de sommer des colonnes individuelles
Le code que j'écris est un petit générateur d'horaires pour le travail qui nécessite une couverture 24/7. Chaque quart couvre une période de deux semaines (certains postes tournent sur une période de deux semaines, mais les exigences de couverture doivent être maintenues - c'est pourquoi je dois utiliser 14 jours). Pour le moment, j'essaie de trouver le moyen le plus rapide de vérifier si une combinaison de postes s'additionne au bon nombre de personnes un jour donné. On me dit Numpy est super rapide à ce genre de choses, mais quand je lance ce qui suit:
import numpy as np
import time
c_ar = np.array([1,1,1,1,0,0,0,1,1,1,1,0,0,0])
d_ar = np.array([0,0,0,1,1,1,1,0,0,0,1,1,1,1])
e_ar = np.array([0,0,0,1,1,1,1,0,0,0,1,1,1,1])
m_ar = np.array([0,1,1,0,1,1,0,0,1,1,0,1,1,0])
p_ar = np.array([1,1,0,0,0,1,1,1,1,0,0,0,1,1])
t0 = time.time()
x = c_ar[0] + d_ar[0] + e_ar[0] + m_ar[0] + p_ar[0]
t1 = time.time()
print t1-t0
Je reviens:
2.19345092773e-05
Cependant, si je exécutez:
c = [1,1,1,1,0,0,0,1,1,1,1,0,0,0]
d = [0,0,0,1,1,1,1,0,0,0,1,1,1,1]
e = [0,0,0,1,1,1,1,0,0,0,1,1,1,1]
m = [0,1,1,0,1,1,0,0,1,1,0,1,1,0]
p = [1,1,0,0,0,1,1,1,1,0,0,0,1,1]
t2 = time.time()
y = c[0] + d[0] + e[0] + m[0] + p[0]
t3 = time.time()
print t3-t2
Je reviens:
1.90734863281e-06
Suis-je manque quelque chose au sujet Numpy qui rendrait plus rapide que mon exemple? Aussi, existe-t-il un moyen encore plus rapide que les deux méthodes que j'ai utilisées plus haut?
Plus un pour la question intéressante. –