You can still squeeze a little bit by removing the array access maxn[N]
in the loop.
function MaxN6c2(cr,N)
maxn = sort!(cr[1:N], rev=true)
maxnN = maxn[N]
@inbounds for i in N+1:length(cr)
e=cr[i]
if maxnN < e
insert1(maxn,N,e)
maxnN = maxn[N]
end
end
maxn
end
julia> @btime MaxN6c2($re6, 20);
555.000 μs (203 allocations: 32.78 KiB)
julia> @btime MaxN6c1($re6, 20);
735.699 μs (203 allocations: 32.78 KiB)
julia> @btime nlargest(20, $re6);
858.300 μs (2 allocations: 480 bytes)
(This would probably apply to nlargest as well.)