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

Stéphane Mottelet stephane.mottelet at utc.fr
Thu Apr 23 23:51:32 CEST 2015


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.


-------------- next part --------------
function test()
timer();
v=rand(172,1);
for i=1:1000
M1_v=[v(17)
v(104)
v(149)
-(v(18)+v(63)+v(103))
v(17)
v(104)
v(149)
-(v(18)+v(63)+v(103))
v(17)
v(104)
v(149)
-(v(18)+v(63)+v(103))
v(17)
v(104)
v(149)
-(v(18)+v(63)+v(103))
v(17)
v(104)
v(149)
-(v(18)+v(63)+v(103))
v(38)
v(125)
v(127)
-(v(39)+v(41)+v(124))
v(38)
v(125)
v(127)
-(v(39)+v(41)+v(124))
v(38)
v(125)
v(127)
-(v(39)+v(41)+v(124))
v(38)
v(125)
v(127)
-(v(39)+v(41)+v(124))
v(38)
v(125)
v(127)
-(v(39)+v(41)+v(124))
v(15)
v(102)
v(147)
-(v(16)+v(61)+v(85)+v(101))
v(15)
v(102)
v(147)
-(v(16)+v(61)+v(85)+v(101))
v(36)
-(v(37)+v(122))
v(36)
-(v(37)+v(122))
v(36)
-(v(37)+v(122))
v(67)
-(v(68)+v(153))
v(67)
-(v(68)+v(153))
v(67)
-(v(68)+v(153))
v(67)
-(v(68)+v(153))
v(67)
-(v(68)+v(153))
v(67)
-(v(68)+v(153))
v(82)
-(v(83)+v(168))
v(82)
-(v(83)+v(168))
v(82)
-(v(83)+v(168))
v(82)
-(v(83)+v(168))
v(70)
-(v(71)+v(156))
v(70)
-(v(71)+v(156))
v(70)
-(v(71)+v(156))
v(70)
-(v(71)+v(156))
v(63)
v(150)
-(v(64)+v(149))
v(63)
v(150)
-(v(64)+v(149))
v(63)
v(150)
-(v(64)+v(149))
v(63)
v(150)
-(v(64)+v(149))
v(63)
v(150)
-(v(64)+v(149))
v(61)
v(127)
-(v(41)+v(62)+v(147))
v(61)
v(127)
-(v(41)+v(62)+v(147))
v(43)
v(135)
-(v(49)+v(129))
v(43)
v(135)
-(v(49)+v(129))
v(43)
v(135)
-(v(49)+v(129))
v(43)
v(135)
-(v(49)+v(129))
v(69)
v(156)
v(160)
v(161)
v(164)
v(166)
v(168)
-(v(70)+v(74)+v(75)+v(77)+v(78)+v(80)+v(82)+v(155))
v(69)
v(156)
v(160)
v(161)
v(164)
v(166)
v(168)
-(v(70)+v(74)+v(75)+v(77)+v(78)+v(80)+v(82)+v(155))
v(69)
v(156)
v(160)
v(161)
v(164)
v(166)
v(168)
-(v(70)+v(74)+v(75)+v(77)+v(78)+v(80)+v(82)+v(155))
v(69)
v(156)
v(160)
v(161)
v(164)
v(166)
v(168)
-(v(70)+v(74)+v(75)+v(77)+v(78)+v(80)+v(82)+v(155))
v(48)
v(135)
v(136)
-(v(49)+v(50)+v(57)+v(134))
v(48)
v(135)
v(136)
-(v(49)+v(50)+v(57)+v(134))
v(48)
v(135)
v(136)
-(v(49)+v(50)+v(57)+v(134))
v(26)
v(114)
-(v(27)+v(28)+v(112))
v(26)
v(114)
-(v(27)+v(28)+v(112))
v(26)
v(114)
-(v(27)+v(28)+v(112))
v(35)
v(122)
v(124)
v(124)
v(158)
v(160)
v(161)
-(v(36)+v(38)+v(38)+v(72)+v(74)+v(75)+v(121))
v(35)
v(122)
v(124)
v(124)
v(158)
v(160)
v(161)
-(v(36)+v(38)+v(38)+v(72)+v(74)+v(75)+v(121))
v(35)
v(122)
v(124)
v(124)
v(158)
v(160)
v(161)
-(v(36)+v(38)+v(38)+v(72)+v(74)+v(75)+v(121))
v(44)
v(131)
v(144)
-(v(45)+v(47)+v(58)+v(130))
v(44)
v(131)
v(144)
-(v(45)+v(47)+v(58)+v(130))
v(44)
v(131)
v(144)
-(v(45)+v(47)+v(58)+v(130))
v(44)
v(131)
v(144)
-(v(45)+v(47)+v(58)+v(130))
v(44)
v(131)
v(144)
-(v(45)+v(47)+v(58)+v(130))
v(10)
v(15)
v(17)
v(18)
v(23)
v(38)
v(41)
v(51)
v(52)
v(54)
v(55)
v(60)
v(72)
v(74)
v(75)
v(108)
v(153)
-(v(22)+v(67)+v(84)+v(96)+v(101)+v(103)+v(104)+v(109)+v(124)+v(127)+v(137)+v(138)+v(140)+v(141)+v(146)+v(158)+v(160)+v(161))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(50)
v(137)
v(138)
v(140)
v(141)
v(144)
-(v(51)+v(52)+v(54)+v(55)+v(58)+v(136))
v(30)
-(v(31)+v(116))
v(30)
-(v(31)+v(116))
v(30)
-(v(31)+v(116))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(49)
v(136)
-(v(50)+v(135))
v(12)
v(100)
v(129)
-(v(14)+v(43)+v(98))
v(12)
v(100)
v(129)
-(v(14)+v(43)+v(98))
v(12)
v(100)
v(129)
-(v(14)+v(43)+v(98))
v(12)
v(100)
v(129)
-(v(14)+v(43)+v(98))
v(32)
v(131)
v(166)
-(v(45)+v(80)+v(86)+v(118))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(3)
v(12)
v(14)
v(90)
-(v(4)+v(25)+v(89)+v(98)+v(100))
v(4)
v(91)
-(v(5)+v(90))
v(4)
v(91)
-(v(5)+v(90))
v(4)
v(91)
-(v(5)+v(90))
v(4)
v(91)
-(v(5)+v(90))
v(4)
v(91)
-(v(5)+v(90))
v(4)
v(91)
-(v(5)+v(90))
v(5)
v(5)
v(11)
v(13)
v(14)
v(92)
v(98)
-(v(6)+v(12)+v(34)+v(91)+v(91)+v(97)+v(99)+v(100))
v(5)
v(5)
v(11)
v(13)
v(14)
v(92)
v(98)
-(v(6)+v(12)+v(34)+v(91)+v(91)+v(97)+v(99)+v(100))
v(5)
v(5)
v(11)
v(13)
v(14)
v(92)
v(98)
-(v(6)+v(12)+v(34)+v(91)+v(91)+v(97)+v(99)+v(100))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(89)
v(95)
-(v(3)+v(9)+v(24)+v(87)+v(88))
v(64)
v(153)
-(v(65)+v(66)+v(67)+v(150))
v(64)
v(153)
-(v(65)+v(66)+v(67)+v(150))
v(64)
v(153)
-(v(65)+v(66)+v(67)+v(150))
v(64)
v(153)
-(v(65)+v(66)+v(67)+v(150))
v(64)
v(153)
-(v(65)+v(66)+v(67)+v(150))
v(32)
-(v(33)+v(118))
v(32)
-(v(33)+v(118))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(9)
v(96)
v(97)
-(v(10)+v(11)+v(95))
v(45)
-(v(46)+v(131))
v(45)
-(v(46)+v(131))
v(45)
-(v(46)+v(131))
v(45)
-(v(46)+v(131))
v(45)
-(v(46)+v(131))
v(45)
-(v(46)+v(131))
v(16)
v(103)
-(v(17)+v(102))
v(16)
v(103)
-(v(17)+v(102))
v(16)
v(103)
-(v(17)+v(102))
v(16)
v(103)
-(v(17)+v(102))
v(16)
v(103)
-(v(17)+v(102))
v(16)
v(103)
-(v(17)+v(102))
v(72)
-(v(73)+v(158))
v(72)
-(v(73)+v(158))
v(72)
-(v(73)+v(158))
v(72)
-(v(73)+v(158))
v(72)
-(v(73)+v(158))
v(72)
-(v(73)+v(158))
v(41)
-(v(42)+v(127))
v(41)
-(v(42)+v(127))
v(41)
-(v(42)+v(127))
v(41)
-(v(42)+v(127))
v(41)
-(v(42)+v(127))
v(41)
-(v(42)+v(127))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(74)
v(75)
-(v(76)+v(160)+v(161))
v(19)
v(20)
v(107)
v(109)
-(v(21)+v(23)+v(105)+v(106))
v(19)
v(20)
v(107)
v(109)
-(v(21)+v(23)+v(105)+v(106))
v(19)
v(20)
v(107)
v(109)
-(v(21)+v(23)+v(105)+v(106))
v(19)
v(20)
v(107)
v(109)
-(v(21)+v(23)+v(105)+v(106))
v(80)
-(v(81)+v(166))
v(80)
-(v(81)+v(166))
v(80)
-(v(81)+v(166))
v(80)
-(v(81)+v(166))
v(80)
-(v(81)+v(166))
v(21)
v(22)
v(102)
v(155)
-(v(16)+v(69)+v(107)+v(108))
v(21)
v(22)
v(102)
v(155)
-(v(16)+v(69)+v(107)+v(108))
v(21)
v(22)
v(102)
v(155)
-(v(16)+v(69)+v(107)+v(108))
v(21)
v(22)
v(102)
v(155)
-(v(16)+v(69)+v(107)+v(108))
v(7)
v(94)
v(108)
v(134)
-(v(8)+v(22)+v(48)+v(93))
v(7)
v(94)
v(108)
v(134)
-(v(8)+v(22)+v(48)+v(93))
v(7)
v(94)
v(108)
v(134)
-(v(8)+v(22)+v(48)+v(93))
v(6)
v(93)
v(112)
-(v(7)+v(26)+v(92))
v(6)
v(93)
v(112)
-(v(7)+v(26)+v(92))
v(6)
v(93)
v(112)
-(v(7)+v(26)+v(92))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(51)
v(52)
-(v(53)+v(137)+v(138))
v(8)
v(11)
v(23)
v(60)
v(101)
v(121)
-(v(15)+v(35)+v(94)+v(97)+v(109)+v(146))
v(8)
v(11)
v(23)
v(60)
v(101)
v(121)
-(v(15)+v(35)+v(94)+v(97)+v(109)+v(146))
v(8)
v(11)
v(23)
v(60)
v(101)
v(121)
-(v(15)+v(35)+v(94)+v(97)+v(109)+v(146))
v(58)
v(146)
-(v(60)+v(144))
v(58)
v(146)
-(v(60)+v(144))
v(58)
v(146)
-(v(60)+v(144))
v(58)
v(146)
-(v(60)+v(144))
v(10)
v(99)
v(99)
v(100)
v(130)
-(v(13)+v(13)+v(14)+v(44)+v(96))
v(10)
v(99)
v(99)
v(100)
v(130)
-(v(13)+v(13)+v(14)+v(44)+v(96))
v(10)
v(99)
v(99)
v(100)
v(130)
-(v(13)+v(13)+v(14)+v(44)+v(96))
v(10)
v(99)
v(99)
v(100)
v(130)
-(v(13)+v(13)+v(14)+v(44)+v(96))
v(10)
v(99)
v(99)
v(100)
v(130)
-(v(13)+v(13)+v(14)+v(44)+v(96))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(13)
v(98)
-(v(12)+v(99))
v(28)
v(116)
v(118)
-(v(29)+v(30)+v(32)+v(114))
v(28)
v(116)
v(118)
-(v(29)+v(30)+v(32)+v(114))
v(28)
v(116)
v(118)
-(v(29)+v(30)+v(32)+v(114))
v(18)
v(105)
v(106)
-(v(19)+v(20)+v(104))
v(18)
v(105)
v(106)
-(v(19)+v(20)+v(104))
v(18)
v(105)
v(106)
-(v(19)+v(20)+v(104))
v(18)
v(105)
v(106)
-(v(19)+v(20)+v(104))
v(78)
v(158)
-(v(72)+v(79)+v(164))
v(78)
v(158)
-(v(72)+v(79)+v(164))
v(78)
v(158)
-(v(72)+v(79)+v(164))
v(78)
v(158)
-(v(72)+v(79)+v(164))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(58)
-(v(59)+v(144))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(54)
v(55)
-(v(56)+v(140)+v(141))
v(39)
-(v(40)+v(125))
v(39)
-(v(40)+v(125))
v(39)
-(v(40)+v(125))
v(39)
-(v(40)+v(125))
v(39)
-(v(40)+v(125))];
end
disp(timer())
endfunction
test


More information about the users mailing list