Faltung in Matlab scheint doppelt so schnell zu sein wie Faltung in Numpy.Ist die Faltung in Numpy langsamer als in Matlab?
Python-Code (dauert 19 Sekunden auf meinem Rechner):
import numpy as np
from scipy import ndimage
import time
img = np.ones((512,512,512))
kernel = np.ones((5,5,5))/125
start_time = time.time()
ndimage.convolve(img,kernel,mode='constant')
print "Numpy execution took ", (time.time() - start_time), "seconds"
Matlab-Code (dauert 8,7 Sekunden auf meinem Rechner):
img = ones(512,512,512);
kernel = ones(5,5,5)/125;
tic
convn(img, kernel, 'same');
toc
Die zwei identische Ergebnisse.
Gibt es eine Möglichkeit, Numpy zu verbessern, um Matlabs Leistung hier zu erreichen oder zu übertreffen?
Interessanterweise ist dieser Faktor oder ~ 2 Unterschied in den Laufzeiten konsistent bei vielen Eingabegrößen.
Es ist nicht wirklich Pythons Leistung, die Sie hier Timing sind, aber NumPy/SciPy's. Können Sie die Leistung dieser Module verbessern? Klar, aber nicht mit Python-Code. – kindall
Bearbeitet (s/Python/Numpy /). – naroom
Sie könnten prüfen, welche Bibliotheken numpy gegen vs Matlab gebaut wird. Ich weiß aus eigener Erfahrung, dass wenn numpy gegen die MKL-Bibliothek von Intel gebaut wird, ich für einige Operationen eine viel bessere Leistung erziele als mit den Standardeinstellungen. – JoshAdel