[Numpy-discussion] Numpy performance vs Matlab.

Nicolas ROUX nicolas.roux@st....
Wed Jan 7 09:19:16 CST 2009


Hi,

I need help ;-)
I have here a testcase which works much faster in Matlab than Numpy.
 
The following code takes less than 0.9sec in Matlab, but 21sec in Python.
Numpy is 24 times slower than Matlab !
The big trouble I have is a large team of people within my company is ready to replace Matlab by Numpy/Scipy/Matplotlib,
but I have to demonstrate that this kind of Python Code is executed with the same performance than Matlab, without writing C extension.
This is becoming a critical point for us.

This is a testcase that people would like to see working without any code restructuring.
The reasons are:
- this way of writing is fairly natural.
- the original code which showed me the matlab/Numpy performance differences is much more complex,
and can't benefit from broadcasting or other numpy tips (I can later give this code)

...So I really need to use the code below, without restructuring.

Numpy/Python code:
#####################################################################
import numpy
import time

print "Start test \n" 

dim = 3000

a = numpy.zeros((dim,dim,3))

start = time.clock()

for i in range(dim):
    for j in range(dim):
        a[i,j,0] = a[i,j,1]
        a[i,j,2] = a[i,j,0]
        a[i,j,1] = a[i,j,2]

end = time.clock() - start        

print "Test done,   %f sec" % end
#####################################################################

Matlab code:
#####################################################################
'Start test'
dim = 3000;
tic;
a =zeros(dim,dim,3);
for i = 1:dim
    for j = 1:dim 
        a(i,j,1) = a(i,j,2);
        a(i,j,2) = a(i,j,1);
        a(i,j,3) = a(i,j,3);
    end
end
toc
'Test done'
#####################################################################

Any idea on it ?
Did I missed something ?

Thanks a lot, in advance for your help.


Cheers,
Nicolas.



More information about the Numpy-discussion mailing list