help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave interpreter slowness


From: Keith Goodman
Subject: Re: Octave interpreter slowness
Date: Wed, 15 Mar 2006 15:04:04 -0800

On 3/15/06, John Swensen <address@hidden> wrote:
> Keith Goodman wrote:
> > On 3/15/06, John Swensen <address@hidden> wrote:
> >
> >> In some recent work, I wasn't able to get our companies' only Matlab
> >> Statistics toolbox license, so I switched to octave for a week or two.
> >> I noticed that the poisson random function in octave took orders of
> >> magnitude longer than Matlab's implementation.  This led me to do a
> >> simple experiment.  I ran the following script on the same computer with
> >> both Matlab and Octave (WinXP with Cygwin Octave release vs. Matlab
> >> 7.something), with very interesting results.
> >> -------------------------------
> >> tic
> >> size = 1000000;
> >> var = zeros(1,size);
> >> for i = 1:size
> >>   var(i) = rand();
> >> end
> >> sum(var)
> >> ElapsedTime = toc
> >> -------------------------------
> >>
> >> Matlab (10 runs) - Ave = 2.0818 seconds
> >> Octave (10 runs) - Ave = 19.911 seconds
> >>
> >> Since this is a fairly simple script with a lot of iterations, does this
> >> indicate that the discrepency is caused somewhere in the parsing
> >> portions of Octave?  I tried the test again with the rand() call
> >> eliminated with similar differences in execution times.  I then tried
> >> the script in Octave on a faster PC running Ubuntu with some
> >> improvements (15 seconds per).
> >>
> >
> > For loops are slow in Octave.
> >
> > When most of the time of a single for loop iteration is spent in
> > matrix operations, the slowness of the for looping is not noticeable.
> > But when most of the time is spent in looping, it is very noticeable.
> >
> > For example
> >
> > a = randn(N);
> > tic
> > for i = 1:1000
> >    x = a*a';
> > end
> > toc
> >
> > As you increase N, the ratio of the slowness decreases.
> >
> > If N is small, the trick is either to vectorize or compile your
> > function with mkoctfile.
> >
> >
> >
> I guess my question pertains as to the source of the slowness.  Is it
> the parser, or is Matlab doing some sort of look-ahead optimization of m
> files?  Do they compile to byte-code or something similar prior to
> execution?

Search the Mathworks site for JIT.



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]