什么是最有效的:对 ArrayBase 或 ArrayView 的引用?

RFT*_*xas 2 rust rust-ndarray

我正在改进使用ndarraycrate 来操作数组的 Rust 代码库。我有一个问题,我在文档中找不到明确的答案。

ArrayView将 的实例作为参数传递给函数是否更有效,或者我应该使用对 an 的引用Array来代替?我的直觉是,由于ArrayView是数组的视图,因此在进行计算时,它仅传递数组的视图,并且不授予函数所有权(因此不复制)底层数据。

简而言之,从传递 的实例切换ArrayView到传递 的引用是否会带来任何速度增益Array

我的目标是避免无用的内存分配/重复,这在处理大型数组时可能会非常昂贵。

nnn*_*mmm 5

ArrayBase是一个通用结构,可以充当 anArrayView和 an Array,所以我假设你的意思是对拥有的数据的引用,即Array

\n

这两个版本都不会克隆数组,因此它们的效率应该大致相同。您始终可以进行基准测试来验证这一点。

\n

在我看来,区别主要在于ArrayView使函数更加灵活 \xe2\x80\x93 你可以传入较大数组的部分,或者ArrayView从切片创建的数组,而引用的变体Array只能被调用当您确实拥有Array所需尺寸时。

\n