0

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

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

简而言之,从传递的实例切换ArrayView到传递的引用是否有任何速度提升Array

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

4

1 回答 1

4

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

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

正如我所看到的,不同之处主要在于ArrayView使函数更加灵活——你可以传入较大数组的一部分,或者ArrayView从一个切片创建一个,而Array只有当你真的有一个Array所需的大小。

于 2022-01-07T20:35:11.073 回答