help-octave
[Top][All Lists]

Re: Performance test

 From: Carlo de Falco Subject: Re: Performance test Date: Thu, 12 Mar 2009 01:21:01 +0100

```
On 11 Mar 2009, at 23:57, DaNiMoTh wrote:

```
```Hello to all.

I've tried to execute the same routine (see attachment) with matlab,
octave and a C program.

There are the results ( both of programs under Linux )

MatLab:
```
```tic ; kernel(magic(100)) ; toc
```
```Elapsed time is 0.052000 seconds.

Octave:
octave:1> tic ; kernel(magic(100)) ; toc
Elapsed time is 56.9406 seconds.

C:
time ./a.out
real    0m0.075s

Why this difference?
Where is the bottleneck of Octave?
```
```
In the 'for' loop,

```
it is well known that writing vectorized code gives a dramatic speed- up in Octave.
```For exmple on my machine, by rewriting your function as

---------------
function G = kernel2(A)

colonne_m = columns(A);
righe_n = rows(A);
G = zeros(righe_n,righe_n);
for i = 1:righe_n
for j = 1:colonne_m
G(i,j) = (A(i,:)*A(j,:)'+1).^3;
endfor
endfor
---------------

I get

---------------
>> tic ; B2=kernel2(magic(100)) ; toc
Elapsed time is 0.60966 seconds.
---------------

---------------
>> tic ; B=kernel(magic(100)) ; toc
Elapsed time is 48.349 seconds.
---------------

and of course

---------------
>> norm(B-B2)
ans = 0
---------------

I'm sure this can be improved even further

```
```There is some documentation about this?
```
```
yes, this is mentioned in the FAQ:
http://www.gnu.org/software/octave/FAQ.html#MATLAB-compatibility

```
Many Thanks. ( Please CC'd me in reply as I'm not a follower of this list )
```
c.

```