win7iis如何做网站,哪里网站建设,帝国 网站搬家,贡井移动网站建设本文是对 N倍性能提升#xff01;无痛Rust并行编程#xff1a;Rayon库初体验[1]的学习与记录 有这样一段程序#xff0c;计算1到1亿的连续数字之和 use std::i64;fn main() { let arr:Veci64 (1..1_0000_0000).collect(); let result sum_of_add(arr);… 本文是对 N倍性能提升无痛Rust并行编程Rayon库初体验[1]的学习与记录 有这样一段程序计算1到1亿的连续数字之和 use std::i64;fn main() { let arr:Veci64 (1..1_0000_0000).collect(); let result sum_of_add(arr); println!({},result);}fn sum_of_add(input: [i64]) - i64 { input.iter() .map(|i| i i) .sum()} 添加部分代码统计程序执行时间 use std::{i64, time::SystemTime};fn main() { let arr: Veci64 (1..1_0000_0000).collect(); let time_a SystemTime::now(); let result sum_of_add(arr); println!({}, result); let time_b SystemTime::now().duration_since(time_a); println!({:?}, time_b);}fn sum_of_add(input: [i64]) - i64 { input.iter().map(|i| i i).sum()} 执行 cargo run --release, 输出: 9999999900000000Ok(67.672ms) 考虑使用Rayon。这是一个并行计算库利用work-steal思想让负载不高的线程去分担其他线程的工作 在cargo.toml文件的dependence处新增 rayon 1.8 在代码中use rayon::prelude::*; 同时将 input.iter().map(|i| i i).sum() 改为 input.par_iter().map(|i| i i).sum()即可。 par即parallel 即 use std::{i64, time::SystemTime};use rayon::prelude::*;fn main() { let arr: Veci64 (1..1_0000_0000).collect(); let time_a SystemTime::now(); let result sum_of_add(arr); println!({}, result); let time_b SystemTime::now().duration_since(time_a); println!({:?}, time_b);}fn sum_of_add(input: [i64]) - i64 { input.par_iter().map(|i| i i).sum()} 再次 cargo run --release 结果为: 9999999900000000Ok(29.368ms) 提升了一倍有余。 如果不加 --release相差更多。 rayon相关代码解析[2] 更多阅读 【每周一库】- Rayon 数据并行计算库[3] Rust Cookbook 中文版-数据并行[4] 和 Rust 烹饪书-并行任务[5] 只有翻译的区别 参考资料 [1] N倍性能提升无痛Rust并行编程Rayon库初体验: https://www.bilibili.com/video/BV1Rz4y1P791 [2] rayon相关代码解析: https://github.com/cuishuang/explain-rust-source-code-by-chatgpt/tree/main/rayon [3] 【每周一库】- Rayon 数据并行计算库: https://rustcc.cn/article?id181e0a73-6742-42a9-b7a1-1c00bef436c2 [4] Rust Cookbook 中文版-数据并行: https://rustwiki.org/zh-CN/rust-cookbook/concurrency/parallel.html [5] Rust 烹饪书-并行任务: https://llever.com/rust-cookbook-zh/concurrency/parallel.zh.html 本文由 mdnice 多平台发布