Rustで2つのイテレータをペアで回す方法です.
二つの方法があるようなので速度比較します.
標準装備を使う
fn main() { let x = vec![0; 1000000]; let y = vec![0; 1000000]; pair_iter(x, y); } fn pair_iter(x: Vec<i32>, y: Vec<i32>) { let start = time::now(); for (i, j) in x.iter().zip(y.iter()) { } let end = time::now(); println!("{}", end - start); }
出力(実行時間)
PT0.033350S
crateのitertoolsを使う
cargo.tomlに
[dependencies] itertools = "0.4.4"
を書いてから,
extern crate itertools; use itertools::Zip; fn main() { let x = vec![0; 1000000]; let y = vec![0; 1000000]; pair_iter(x, y); } fn pair_iter(x: Vec<i32>, y: Vec<i32>) { let start = time::now(); for (i, j) in Zip::new((&x, &y)) { } let end = time::now(); println!("{}", end - start); }
出力(実行時間)
PT0.071162S
まとめ
単にzipで回すだけならcrateを使わない方が2倍ほど早いらしい.
以上です.