【问题标题】:Taking views of views allocate in Julia在 Julia 中获取视图分配的视图
【发布时间】:2022-12-21 09:36:46
【问题描述】:

我注意到采用非“快速线性索引”子数组分配的视图,而这在经典向量上是可能的。 任何想法,如何使这个分配免费?

这是行为的说明:

function temp!(lin::Vector{Int}, v::AbstractVector)
  w = view(v, lin)
  return nothing
end

lin = Int[1]; v = [0.0, 0.0, 0.0, 0.0];
temp!(lin, v)
@allocated temp!(lin, v) # allocates 0
vr = view(v, 1:3)
temp!(lin, vr)
@allocated temp!(lin, vr) # allocates 64

【问题讨论】:

  • 我认为这通常是不可能的。

标签: arrays julia sub-array


【解决方案1】:

vr 是一个带有 1:3 索引的视图,当您使用 [1] 之类的 vector int 提取视图时,它需要分配。避免额外分配的一种可能方法是写view(vr, 1:1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多