对于向量值,for循环还是for_each哪个更快?

yjl*_*lee 1 rust

我正在尝试将向量中的每个项目插入到地图中。for-loop使用 a或 via 迭代器,哪一个是首选且更快for_each

小智 5

官方文档指出 for 和 for_each 具有相同的运行时性能:

\n
\n

“闭包和迭代器的实现不会影响运行时性能。这是 Rust\xe2\x80\x99 努力提供零成本抽象目标的一部分。”

\n
\n

https://doc.rust-lang.org/book/ch13-04-performance.html

\n

如果您不确定两种不同实现中哪一个更快(无论是否涉及 for 循环),您始终可以自己测量。执行此操作时,请确保使用大数组(大小可能 >100k),以便您的测量更加准确。

\n
use std::time::{Instant};\nuse std::thread;\nuse std::time::Duration;\n\nfn my_fun() {\n    // Put your code here\n}\n\nfn main() {\n    let current = Instant::now();\n    \n    my_fun();\n    \n    let duration = current.elapsed();\n    \n    println!("Time elapsed in MyFun() is: {:?}", duration);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

使用您的实现运行该程序。

\n

  • 不同意自己测试一下。即使使用基准测试框架(尤其是不使用基准测试框架),这也可能非常棘手,而且您很容易错过边缘情况。 (3认同)