J'ai le goulot d'étranglement suivant et je me demande si quelqu'un peut suggérer des façons d'accélérer. J'ai trois listes x,y,z
de longueur N
. et j'applique ce qui suit summation.Accélérer la sommation pour la boucle en python
def abs_val_diff(x1, x2, x3, y1, y2, y3):
""" Find the absolute value of the difference between x and y """
return py.sqrt((x1 - y1) ** 2.0 + (x2 - y2) ** 2.0 + (x3 - y3) ** 2.0)
R = 0.1
sumV = 0.0
for i in xrange(N):
for j in xrange(i + 1, N):
if R > abs_val_diff(x[i], y[i], z[i],
x[j], y[j], z[j]):
sumV += 1.0
J'ai essayé d'utiliser des tableaux numpy, mais soit je fais quelque chose de mal ou il y a une réduction de la vitesse d'environ un facteur de 2.
Toutes les idées seraient très appréciés.
Je ne vois pas de relation avec Cython. Je retire l'étiquette ... –
J'avais pensé utiliser Cython pour accélérer le calcul. Cela n'a pas d'importance. – Greg