arrays - Rust 向量的性能(`Vec`) 与数组 (`[T; n]`)
问题描述
在 Rust 中使用向量与数组相比,我在性能方面损失了多少?
我所说的性能是指:元素访问的速度或迭代的速度。
解决方案
它们都将数据存储在线性连续数组中,其中访问或迭代都是 O(1) 操作,因此性能没有差异。向量较慢的唯一情况可能是一些小列表,因为数组存储在当前堆栈帧的堆栈中,因此它们的数据很可能已经加载到 CPU 缓存中。Vector OTOH 将数据存储在堆上,因此数据在第一次访问之前不会在缓存中可用
Vector 还具有更高级别的重定向,因为您需要先加载数组的地址,因此第一次内存访问也可能更慢,但这可以忽略不计
另一次向量更糟糕的是,当您使用向量的向量与多维数组时,因为每个向量都是单独分配的,并且位于不利于缓存的内存周围。请参阅vec 与数组的访问时间
推荐阅读
- apache-kafka - 如何使用 FlinkKafkaConsumer 分别解析 key
代替 - python - 如何使用日志记录模块在日志文件中记录错误/异常?
- reactjs - React 从 POST 请求中获取异步数据并显示数据
- mysql - MySQL 'set names latin1' 似乎导致数据存储为 utf8
- linq - 为什么使用 linq 或实体 .. 不直接使用来自 ado.net 的数据
- mysql - NodeJS 和 MariaDB。避免查询每一列
- laravel - 如何在 Laravel 中使用包含集合
- c++ - 模板参数扣除/替换失败:地图没有第一,第二吗?
- python - Django 和技术领域
- graphql - 将一个graphql查询的结果输入另一个?