[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