在 Rust 中使用向量与数组相比,性能损失了多少?
我所说的性能是指:元素访问的速度或迭代的速度。
它们都将数据存储在线性连续数组中,其中访问或迭代都是 O(1) 操作,因此性能没有差异。向量较慢的唯一情况可能是对于一些小列表,因为数组存储在当前堆栈帧的堆栈上,因此它们的数据很可能已经加载到 CPU 缓存中。 Vector OTOH 将数据存储在堆上,因此在首次访问数据之前,数据在缓存中不可用
Vector 还具有多级重定向,因为您需要首先加载数组的地址,因此第一次内存访问可能也会较慢,但这可以忽略不计
另一次,向量更糟糕的是当您使用向量向量与多维数组时,因为每个向量都是单独分配的并且位于内存周围,这不利于缓存。看vec 与数组的访问时间 https://www.reddit.com/r/rust/comments/3bu7a8/access_time_of_vec_vs_array/
也可以看看数组与 vec 在内存和 CPU 使用方面的差异 https://users.rust-lang.org/t/difference-between-array-vs-vec-for-memory-and-cpu-usage/23710/2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)