什么时候 `.=` 比 `=` 更有效率?

问题描述

考虑使用 BenchmarkTools 的以下 REPL 行:

julia> N = 10^2; M = collect(reshape(1:N^2,N,N)); e = collect(1:N); # N=100
julia> @btime M[:,1] .= e; @btime M[:,1] = e;
  1.211 μs (6 allocations: 128 bytes)
  364.623 ns (1 allocation: 16 bytes)
julia> N = 10^3; M = collect(reshape(1:N^2,N)); e = collect(1:N); # N=1000
julia> @btime M[:,1] = e;
  1.511 μs (6 allocations: 128 bytes)
  1.634 μs (1 allocation: 16 bytes)
julia> N = 10^4; M = collect(reshape(1:N^2,N)); e = collect(1:N); # N=10000
julia> @btime M[:,1] = e;
  3.514 μs (6 allocations: 128 bytes)
  13.230 μs (1 allocation: 16 bytes)

似乎 .== 更有效,但仅适用于大 N。我仍然不太了解幕后发生的事情,也没有在 Julia 文档中找到解释。我什么时候应该使用其中一种?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)