You are still trying to run in global scope. Put your code in a function before drawing conclusions.
On Fri, Sep 12, 2014 at 12:58 AM, Christoph Ortner < christophortn...@gmail.com> wrote: > On Friday, 12 September 2014 02:24:15 UTC+1, gael....@gmail.com wrote: > >> Wouldn't it be enough to put it in a local scope (let block or in a >> function?). >> >> For more information, you can ask or look at the Performance tips part of >> the manual. >> > I'd be interested in. Here is another code block: > > a1 = rand(10, 10, 100, 100) > b1 = rand(10, 100, 100) > c1 = rand(10, 100, 100) > const a2 = rand(10,10,100,100) > const b2 = rand(10,100,100) > const c2 = rand(10,100,100) > @time(begin > for n = 1:10 > d1 = Float64[ a1[a,b,i,j] .* b1[a,i,j] .* c1[b,i,j] for a = 1:10, > b = 1:10, i=1:100,j=1:100 ] > end > end) > @time(begin > for n = 1:10 > d2 = [ a2[a,b,i,j] .* b2[a,i,j] .* c2[b,i,j] for a = 1:10, b = > 1:10, i=1:100,j=1:100 ] > end > end) > > > OUTPUT: > > elapsed time: 4.554876933 seconds (1039919360 bytes allocated, 25.73% gc time) > elapsed time: 0.147784029 seconds (80001120 bytes allocated, 54.91% gc time) > > This is a factor-30 slow-down. I think comprehensions are wonderful to > read, but this makes them useless, unless there is a reasonably elegant fix. > >