使用并行流优化图像处理
您正在开发一个图像处理应用,用于对大量图像批量应用滤镜。当前应用按顺序处理图像,随着图像数量增长,这一步已成为性能瓶颈。您的任务是实现并行流方案以提升性能。
Image 类已为您预加载。
本练习是课程的一部分
Java 代码优化
练习说明
- 将流转换为并行流以加快处理速度。
- 对流中的所有图像应用滤镜。
- 将处理后的图像收集为单个列表。
交互式实操练习
通过完成这段示例代码来试试这个练习。
public class ImageProcessor {
public static void main(String[] args) {
List images = generateImages(500);
List result = images
// Use a parallel stream for multi-thread processing
.____()
// Apply filters to each image using `map()`
.____(image -> applyFilters(image))
// Collect images to a single list
.____(Collectors.toList());
}
static Image applyFilters(Image image) {
image = blur(image);
image = sharpen(image);
return image;
}
static Image blur(Image image) {
process(); return new Image(image.id, image.width, image.height);
}
static Image sharpen(Image image) {
process(); return new Image(image.id, image.width, image.height);
}
static void process() {
for (int i = 0; i < 100000; i++) {
double result = Math.sin(i) * Math.cos(i);
}
}
static List generateImages(int count) {
List list = new ArrayList<>();
for (int i = 0; i < count; i++) {
list.add(new Image(i, 1920, 1080));
}
return list;
}
}