我正在考虑使用 Rayon 的并行迭代器功能,但我担心迭代小集合的性能。
并行开销有时会导致小型集合的速度变慢。如果我为多线程做必要的准备,那么迭代 2 个元素比使用单线程版本要慢。如果我有 4000 万个元素,并行性会给我带来线性的性能提升。
我读到了ParallelIterator::weight
(0.6.0),但我不明白我是否应该为小型收藏品优化这种极端情况,或者 Rayon 是否聪明并处理引擎盖下的所有事情。
if collection_is_small() {
// Run single threaded version...
} else {
// Use parallel iterator.
}
已ParallelIterator::weight
处理元素的 为 1。有关良好定义,请参阅相关文档,但处理单个元素很便宜。
谷歌把我送到了一个旧的文档页面。自 0.8.0 版以来Weight
已弃用并删除。