[Numpy-discussion] matlab vs. python question

Neal Becker ndbecker2@gmail....
Thu Apr 26 07:47:43 CDT 2007


Sturla Molden wrote:

> On 4/26/2007 2:19 PM, Steve Lianoglou wrote:
> 
>>> Beside proper programing paradigm Python easily scales to large-
>>> scale number crunching: You can run large-matrices calculations
>>> with about 1/2 to 1/4 of memory consumption comparing to Matlab.
>> 
>> Is that really true? (The large-matrix number crunching, not the
>> proper programming paradigm ;-)
>> 
>> By no scientific means of evaluation, I was under the impression that
>> the opposite was true to a smaller degree.
> 
> Matlab have pass-by-value semantics, so you have to copy your data in
> and copy your data out for every function call. You can achieve the same
> result in Python by pickling and unpickling arguments and return values,
> e.g. using this function decorator:
> 
> 
> import cPickle as pickle
> 
> def Matlab_Semantics(f):
> 
>     '''
>         Emulates Matlab's pass-by-value semantics,
>         objects are serialized in and serialized out.
> 
>         Example:  @Matlab_Semantics
>                   def foo(bar):
>                       pass
>     '''
> 
>     func = f
>     return wrapper
> 
>     def wrapper(*args,**kwargs):
>        args_in = pickle.loads(pickle.dumps(args))
>        kwargs_in = {}
>        for k in kwargs:
>           kwargs_in[k] = pickle.loads(pickle.dumps(kwargs[k]))
>        args_out = func(*args_in,**kwargs_in)
>        args_out = pickle.loads(pickle.dumps(args_out))
>        return args_out
> 
> Imagine using this horrible semantics in several layers of function
> calls. That is exactly what Matlab does. Granted, Matlab optimizes
> function calls by using copy-on-write, so it will be efficient in some
> cases, excessive cycles og copy-in and copy-out is usually what you get.
> 
> 
That's interesting.  How did you find this information?



More information about the Numpy-discussion mailing list