On Thu, 2016-02-25 at 15:57, J Luis <jmfl...@gmail.com> wrote: > Incidentally, this errors in 0.5 (but works fine in 0.4) > > julia> s=0.0; > > julia> m=rand(10000,1000); > > julia> @time for el in m > s = s + el > end > ERROR: UndefVarError: s not defined > [inlined code] from .\none:2 > in anonymous at .\no file:4294967295 > in eval at <invalid>:0
I think this is https://github.com/JuliaLang/julia/issues/10472, or might be related. I posted a minimal test case there. > > > > quinta-feira, 25 de Fevereiro de 2016 às 13:35:56 UTC, abc escreveu: > > For the following matrix > my_matrix = randn(10000, 1000) > using eachindex to access all elements is much slower than using ranges or > even for el in my_matrix, even though it says in the documentation > (http:// > docs.julialang.org/en/release-0.4/stdlib/arrays/#Base.eachindex) that > eachindex uses ranges for Arrays. > > Some code and numbers: > julia> sum = 0.0 > julia> @time for iter in eachindex(my_matrix) > sum += my_matrix[iter] > end > 1.288944 seconds (50.00 M allocations: 915.519 MB, 3.36% gc time) > julia> sum = 0.0 > julia> @time for i in 1:10000, j in 1:1000 > sum += my_matrix[i,j] > end > 0.681678 seconds (34.38 M allocations: 524.582 MB, 2.45% gc time) > julia> sum = 0.0 > julia> @time for el in my_matrix > sum += el > end > 1.063564 seconds (40.00 M allocations: 762.993 MB, 3.41% gc time) > > Am I reading the documentation wrong, or is there something strange with > the matrix indexing? Because as it is, I don't see any benefit of using > anything different than simple ranges for manipulating matrices.