struct Point {
x: i32,
y: i32,
}
fn main() {
let points: Vec<Point> = vec![
Point { x: 50, y: 60 },
Point { x: 20, y: 30 },
Point { x: 80, y: 90 },
];
let sum_of_squared_distances: i32 = points
.iter()
.filter(|point| point.x + point.y > 100)
.map(|point| point.x * point.x + point.y * point.y)
.sum();
println!("Sum of squared distances: {}", sum_of_squared_distances);
}
性能优化说明
- 使用迭代器: 迭代器是 Rust 中高效处理集合的方式。
filter
和 map
方法都是惰性求值的,只有在调用 sum
时才会真正遍历集合,减少不必要的中间数据存储。
- 避免不必要的计算: 直接计算距离的平方而不是先计算距离再平方。因为计算平方根是一个相对昂贵的操作,在只需要距离平方和的情况下,避免这个操作可以提升性能。
- 使用
iter
而不是 into_iter
: 在这个场景下,iter
方法返回的 &Point
引用足够,不需要消耗掉 points
向量,从而避免了不必要的内存移动或复制。