On Thu, Feb 25, 2016 at 9:57 AM, Yichao Yu <[email protected]> wrote:
> On Thu, Feb 25, 2016 at 9:33 AM, abc <[email protected]> wrote:
>> Ah, yes, this seems to have fixed the problem, thank you.
>>
>> Now, when not in global scope, using eachindex is definitely the fastest
>> approach.
>> I made some measurements over 1000 runs for each of the approaches in the
>> original post, here are the averages:
>> Using eachindex: 0.0026683
>> Using ranges: 0.0041256
>> Using in: 0.0031200
>>
>> I guess I'll stick with eachindex. :)
>>
>> On Thursday, February 25, 2016 at 1:50:04 PM UTC, Stefan Karpinski wrote:
>>>
>>> Can you try it not in global scope?
>>>
>>> On Thu, Feb 25, 2016 at 5:17 AM, abc <[email protected]> wrote:
>>>>
>>>> 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)
>
> ^^ I believe this one is also iterating in the wrong direction. Try
> `for j in ..., for i in ...`

`for j in ... , i in ...` *

>
>>>> 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.
>>>
>>>
>>

Reply via email to