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.
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)
]
This kind of large vectors are the used to build a sparse matrix each
time the vector v changes, but with a constant sparsity pattern.
Actually, the time spent by Scilab in the statement
M1=sparse(M1_ij,M1_v,[n1,n2])
is negligible compared to the time spent to build f M1_v...
I have also noticed that if you need to define such a matrix with more
that one column, the time elapsed is not linear with respect to the
number of columns: typically 4 times slower for 2 columns. In fact the
statement
v=[1 1
...
1000 1000]
is even two times slower than
v1=[1
...
1000];
v2=[1
....
1000];
v=[v1 v2];
So my question to users who have the experience of dynamic link of
user code : do you think that using dynamic link of compiled generated
C code could improve the timings ?
In advance, thanks for your help !
S.
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users