【发布时间】:2021-04-03 14:50:22
【问题描述】:
我正在将程序从使用 MVector Word32 切换到 STUArray Word Word32。在我的矢量代码中,我使用unsafeMove 来移动矢量切片;认为它可能是为了提高效率而包装了memmove。
case dst ⊕ 3 of
src | n < src + w -> do
let w0 = n - src
let w' = w - w0
unsafeMove (slice dst w0 v) (slice src w0 v)
if w' <= 3
then do
unsafeMove (slice (n - 3) w' v) (slice 0 w' v)
else do
let w'' = w' - 3
unsafeMove (slice (n - 3) 3 v) (slice 0 3 v)
unsafeMove (slice 0 w'' v) (slice 3 w'' v)
src | n < dst + w -> do
let w1 = n - dst
let w'' = w - w1
unsafeMove (slice dst w1 v) (slice src w1 v)
unsafeMove (slice 0 w'' v) (slice 3 w'' v)
src -> do
unsafeMove (slice dst w v) (slice src w v)
MArray 类型类似乎没有公开一种在一次调用中移动多个元素的方法,只是一个接一个地移动。是否有用于一次移动多个 STUArray 元素(或者可能是 ByteArray#)的包装器?
【问题讨论】: