I suspect they may be doing different things. I don’t know what qr
method Octave calls when no output arguments are provided, but my guess is that it’s just doing the 1st phase (computing the Householder reflectors and upper-triangular part) and not the 2nd (building Q). This would roughly match qrfact
in Julia. On my machine, I get:
julia> @time qrfact(A);
5.906331 seconds (25.99 k allocations: 194.912 MiB, 2.13% gc time)
julia> @time qr(A);
16.202900 seconds (93.73 k allocations: 770.718 MiB, 1.62% gc time)