On Friday, September 12, 2014, Douglas Bates <dmba...@gmail.com> wrote:
> 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. > Even more, [ ] creates an empty array with element type None, so it can't even be extended!