[Scilab-users] Ways to speed up simple things in Scilab ?

Samuel Gougeon sgougeon at free.fr
Fri Apr 24 15:35:41 CEST 2015


Le 24/04/2015 14:50, Stéphane Mottelet a écrit :
> Hello Antoine
>
> I think your idea is excellent in my context, I Will try it and keep 
> you informed of the actual improvement,
>
> S.
>
> Le 24 avr. 2015 à 13:31, Antoine Monmayrant 
> <antoine.monmayrant at laas.fr <mailto:antoine.monmayrant at laas.fr>> a écrit :
>
>> Hi again,
>>
>> Another way you might improve your code: can you write it as a 
>> matrix-vector product?
>> Like
>>
>> M1_v=A*v;
>> Where A is a matrix of size (839,172) that corresponds to your weird 
>> combination of v(i) to build M1_v.
>> It seems to me that you should be able to write it that way, which 
>> would save a lot of time as matrix product are fast in Scilab.

The test:

A  =  sign(sprand(839,172,2/172,  "normal"));
i  =  A>0;  A(i)  =  1;
i  =  A<0;  A(i)  =  -1;
p  =  rand(172,1);
tic()
for  i  =  1:1000
     M1_v  =  A*p;
end
toc()

gives
-->toc()
  ans  =
     0.156

But somewhere you will somehow have to actually preset
A(1,17) = 1;
A(2,104) = 1;
A(3,149) = 1;
A(4, [18 63 103]) = -1;
A(5, [18 63 103]) = -1;
A(6,17) = 1;
...
A(838, 104) = 1;
A(839, 149) = 1;

A priori, this is a bit more human-readable, but also more 
time-consuming... I am afraid that doing this in this way you will loose 
the gain "got" with matrix multiplication.

Samuel

>>
>> Antoine
>>
>>
>> Le 04/23/2015 11:51 PM, Stéphane Mottelet a écrit :
>>> Hello,
>>>
>>> I am currently working on a project where Scilab code is 
>>> automatically generated, and after many code optimization, the 
>>> remaining bottleneck is the time that Scilab spends to execute 
>>> simple code like this (full script (where the vector has 839 lines) 
>>> with timings is attached) :
>>>
>>> M1_v=[v(17)
>>> v(104)
>>> v(149)
>>> -(v(18)+v(63)+v(103))
>>> -(v(18)+v(63)+v(103))
>>> v(17)
>>> ...
>>> v(104)
>>> v(149)
>>> ]
>>> .../...

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20150424/c15bd112/attachment.htm>


More information about the users mailing list