BaşlayınÜcretsiz başlayın

Paralel akışlarla görüntü işlemeyi optimize etme

Büyük sayıda görüntüye filtre uygulayan bir görüntü işleme uygulaması üzerinde çalışıyorsun. Şu anda uygulama görüntüleri sıralı olarak işliyor, ancak görüntü sayısı arttıkça bu bir darboğaz hâline geliyor. Performansı artırmak için paralel akış çözümü uygulaman isteniyor.

Image sınıfı senin için önceden yüklendi.

Bu egzersiz, kursun bir parçasıdır

Java'da Kod Optimizasyonu

Kursa Göz Atın

Egzersiz talimatları

  • Daha hızlı işlem için akışı paralel akışa dönüştür.
  • Akıştaki tüm görüntülere filtre uygula.
  • Görüntüleri tek bir listede topla.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

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;
    }
}
Kodu Düzenle ve Çalıştır