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

Stéphane Mottelet stephane.mottelet at utc.fr
Fri Apr 24 14:34:46 CEST 2015


Hello,

this is not trivial indexing, in fact some terms are linear combination 
of v's components

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

How do you take this into account in your proposed method ? These 
combinations are sums of influxes in a metabolic network, and the code 
is automatically generated.


S.


Le 24/04/2015 13:48, Samuel Gougeon a écrit :
> Le 24/04/2015 13:36, Samuel Gougeon a écrit :
>> Hello Stephane,
>>
>> You can speed up by a factor larger than 100 just by calling v once 
>> (or 3 times) instead of ~1000, as shown by this test:
>
> Actually, to be more accurate, the right comparative test is the 
> following:
>
> function  test2()
>      v  =  rand(172,1);
>      p  =  grand(1,839,"unf",1,173)
>      // Part 1: 1 call to v()
>      tic()
>      for  i=1:1000
>          m1_v  =  v(p)
>      end
>      disp(toc())
>      
>      // Part 2 : 839 calls to v()
>      deff("test3()",  "for i=1:1000, M1_v = ["+strcat("v("+string(p)+")")+"], end")
>      tic()
>      test3()
>      disp(toc())
> endfunction
>
> In this version, the compilation time used by execstr() is no longer 
> taken into account.
>
> The results are still explicit:
> -->test2()
>
>     0.016
>
>     0.78
>
> So, a speed-up by ~x 50
>
> Samuel
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users

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


More information about the users mailing list