MATLAB в два раза быстрее, чем Numpy
Я студент инженерного факультета, в настоящее время делающий переход с MATLAB на Python для целей численного моделирования. У меня сложилось впечатление, что для базовых манипуляций с массивами Numpy будет работать так же быстро, как MATLAB. Тем не менее, для двух разных программ, которые я пишу, оказывается, что MATLAB чуть менее чем в два раза быстрее Numpy. Тестовый код, который я использую для Numpy (Python 3.3):
import numpy as np
import time
a = np.random.rand(5000,5000,3)
tic = time.time()
a[:,:,0] = a[:,:,1]
a[:,:,2] = a[:,:,0]
a[:,:,1] = a[:,:,2]
toc = time.time() - tic
print(toc)
Принимая во внимание, что для MATLAB 2012a я использую:
a = rand(5000,5000,3);
tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc
Я использую алгоритм, который используется в НАСАВеб-сайт сравнивая Numpy и MATLAB. Сайт показывает, что Numpy превосходит MATLAB по скорости для этого алгоритма. Тем не менее, мои результаты показывают время моделирования 0,49 с для Numpy и время моделирования 0,29 с для MATLAB. Я также запустил решатель Гаусса-Зейделя как на Numpy, так и на Matlab, и я получил аналогичные результаты (16,5 с против 9,5 с)
Я новичок в Python и не очень грамотный в плане программирования. Я использую WinPython 64-битный дистрибутив Python, но также пробовал Pythonxy безрезультатно.
Одна вещь, которую я прочитал, которая должна улучшить производительность, - это сборка Numpy с использованием MKL. К сожалению, я не знаю, как это сделать в Windows. Мне вообще нужно это делать?
Какие-либо предложения?