Le 24/04/2015 15:35, Samuel Gougeon a écrit :
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 <[email protected] <mailto:[email protected]>> 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

No it is not a problem because the A matrix has to be created only once, since its sparsity pattern won't change later on.

S.



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)
]
.../...



_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to