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.


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
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to