Julia中"zero(eltype(x))"和"zero"(x)之间的差异

  • 本文关键字:quot zero 之间 eltype Julia julia
  • 更新时间 :
  • 英文 :


在"Julia High Performance"(第二版(中,作者给出了以下示例来解释如何在循环中获得类型稳定性:

function simdsum_fixed(x)
s = zero(eltype(x))
@simd for v in A
s += v
end
return s
end

在前面的示例中,对于不同的代码,它们只是使用zero(x)。因此,我在没有eltype()的情况下尝试了以下相同的函数(simdsum_fixed_b(。他们似乎以同样的方式工作。

function simdsum_fixed_b(x)
s = zero(x)
@simd for v in A
s += v
end
return s
end

那么zero(eltype(x))zero(x)有何不同?使用第一个比第二个有什么好处?

提前谢谢。

如果x是一个容器(例如向量(,并且您想要它的元素的加性标识,请使用zero(eltype(x))。如果要获得x本身的加性标识,请使用zero(x)

矢量的例子如下,差异最明显:

julia> x = [1, 2, 3]
3-element Vector{Int64}:
1
2
3
julia> zero(x)
3-element Vector{Int64}:
0
0
0
julia> zero(eltype(x))
0

最新更新