This looks like JIT compiler performance issue to me. Unless someone else more knowledgeable comments you should consider filing an issue. In the meantime, you could try to re-write your code to use loops instead of explicitly unrolling everything. That might increase overall performance even though your code gets slower.
On Wed, 2015-05-06 at 11:50, Stéphane Mottelet <[email protected]> wrote: > Sorry, > > The attached script was broken here is a correctly running version. > > S. > > Le mardi 5 mai 2015 20:21:57 UTC+2, Stéphane Mottelet a écrit : >> >> Hello all, >> >> I am currently studying if it is worth migrating my project from Scilab >> to Julia, and I have the following remarks/questions. >> The code that is actually executed is automatically generated and the >> most time consuming tasks consist in (large) sparse matrix updating >> where the terms of the matrix are updated at each step of an >> optimization algorithm. Hence, typically code is of the kind >> >> function solve_weight_1(v,x1_input) >> # >> # Weight 1 cumomers >> # >> @inbounds M1.nzval=[-(v[18]+v[63]+v[103]) >> v[63] >> v[103] >> v[18] >> -(v[18]+v[63]+v[103]) >> v[63] >> v[103] >> v[18] >> -(v[18]+v[63]+v[103]) >> ... >> ] (800 lines for a 231*231 sparse matrix) >> >> >> The code is produced during an assembly (like assembly in the finite >> element method), driven by the structure of a metabolic network. Since >> the structure of the network is completely arbitrary, adhoc code >> generation seems the best solution. >> >> I am a bit puzzled because once the functions are compiled they run very >> fast, typically for the attached function runs in 0.000979136 s, but the >> first run/compilation takes 4.754678495 seconds. >> >> julia> include("solve_weight_1.jl"); >> >> julia> @time out=solve_weight_1(v,x1_input); >> elapsed time: 4.754678495 seconds (18975668 bytes allocated) >> >> julia> @time out=solve_weight_1(v,x1_input); >> elapsed time: 0.000979136 seconds (86520 bytes allocated) >> >> How compilation time can it be improved ? There are plenty other >> functions like this one in the generated code and most of the time the >> code is rarely run more than a few times. Typically, the compilation of >> the while stuff takes 40 seconds but the optimization process only takes >> 1 second... >> >> Thanks in advance for help >> >> Stéphane >> >> >> >> >>
