Why is the order of these loops barely affects the time?

N=100
x=rand(N,N,N)
y=rand(N,N,N)

function abc(x::Array{Float64,3},y::Array{Float64,3})
    for a=1:N
        for b=1:N
            for c=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end
function acb(x::Array{Float64,3},y::Array{Float64,3})
    for a=1:N
        for c=1:N
            for b=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end
function bac(x::Array{Float64,3},y::Array{Float64,3})
    for b=1:N
        for a=1:N
            for c=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end
function bca(x::Array{Float64,3},y::Array{Float64,3})
    for b=1:N
        for c=1:N
            for a=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end
function cab(x::Array{Float64,3},y::Array{Float64,3})
    for c=1:N
        for a=1:N
            for b=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end
function cba(x::Array{Float64,3},xx::Array{Float64,3})
    for c=1:N
        for b=1:N
            for a=1:N
                y[a,b,c]=x[a,b,c]
            end
        end
    end
end

@time abc(x,y)
@time acb(x,y)
@time bac(x,y)
@time bca(x,y)
@time cab(x,y)
@time cba(x,y)

Reply via email to