MulaiMulai sekarang secara gratis

Mengoptimalkan pemrosesan gambar dengan parallel stream

Anda sedang mengerjakan aplikasi pemrosesan gambar yang menerapkan filter pada sekumpulan besar gambar. Saat ini, aplikasi memproses gambar secara berurutan, tetapi hal ini menjadi hambatan seiring bertambahnya jumlah gambar. Anda diminta untuk menerapkan solusi parallel stream untuk meningkatkan kinerja.

Kelas Image telah dimuat sebelumnya untuk Anda.

Latihan ini adalah bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Petunjuk latihan

  • Ubah stream menjadi stream paralel untuk pemrosesan yang lebih cepat.
  • Terapkan filter ke semua gambar dalam stream.
  • Kumpulkan gambar ke dalam satu list.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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;
    }
}
Edit dan Jalankan Kode