On Friday, September 12, 2014 12:41:49 AM UTC-5, Christoph Ortner wrote: > > That did work - thank you, see code below. To explain: this came from a > bottleneck in a bigger code, so my problem there must be a different one. > -- Christoph > > function testtime() > a1 = rand(10, 10, 100, 100) > b1 = rand(10, 100, 100) > c1 = rand(10, 100, 100) > d1 = [] > const a2 = rand(10,10,100,100) > const b2 = rand(10,100,100) > const c2 = rand(10,100,100) > d2 = [] > @time(begin > for n = 1:10 > d1 = [ 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) > println(typeof(d1)) > @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) > println(typeof(d2)) > end >
A small point about the code. The initialization d1 = [] is unnecessary. In fact, this assignment initializes d1 to a 1-dimensional array with 0 elements. The comprehension creates the array of the correct dimension and populates it so that initial 1-dimensional array is discarded. > > testtime() > > > >