เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เพิ่มประสิทธิภาพการประมวลผลภาพด้วย parallel streams

คุณกำลังพัฒนาแอปพลิเคชันประมวลผลภาพที่ใช้ฟิลเตอร์กับชุดรูปภาพขนาดใหญ่ ปัจจุบันแอปพลิเคชันประมวลผลภาพแบบลำดับขั้น ซึ่งเริ่มเป็นคอขวดเมื่อจำนวนรูปภาพเพิ่มมากขึ้น งานของคุณคือนำ parallel stream มาใช้เพื่อยกระดับประสิทธิภาพการทำงาน

คลาส Image ถูกโหลดไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การปรับแต่งโค้ดใน Java

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แปลง stream ให้เป็น parallel stream เพื่อการประมวลผลที่รวดเร็วขึ้น
  • ใช้ฟิลเตอร์กับรูปภาพทั้งหมดใน stream
  • รวบรวมรูปภาพทั้งหมดลงใน list เดียว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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;
    }
}
แก้ไขและรันโค้ด