小编JS4*_*137的帖子

就地向量修改的理论与实际性能的混淆

为了满足高性能数学库的需求,我一直在对各种方法进行基准测试,以在 Rust vec 上进行就地操作(最好通过引用)。这些方法是:

  • 使用显式 for 循环
  • 使用迭代器,然后使用 a map(),收集到一个新的 vec,并覆盖现有的
  • 使用迭代器然后使用for_each()

这是基准测试代码:

use std::time::{Instant, Duration};

const N_ITEMS: usize = 100000;
const N_BENCH_TIMES: i32 = 100;

fn bench_simple() {
    let mut a: Vec<i32> = vec![5; N_ITEMS];
    for i in a.iter_mut() {
        *i += 1;
    }
}

fn bench_iterator() {
    let mut a: Vec<i32> = vec![5; N_ITEMS];
    let a: Vec<i32> = a.iter_mut().map(|x| *x + 1).collect();
}

fn bench_foreach() {
    let mut a: Vec<i32> = vec![5; N_ITEMS];
    a.iter_mut().for_each(|x| *x += …
Run Code Online (Sandbox Code Playgroud)

benchmarking vector rust

0
推荐指数
1
解决办法
92
查看次数

标签 统计

benchmarking ×1

rust ×1

vector ×1