शुरू करेंमुफ़्त में शुरू करें

Parallel streams के साथ इमेज प्रोसेसिंग ऑप्टिमाइज़ करना

आप एक इमेज प्रोसेसिंग एप्लिकेशन पर काम कर रहे हैं जो बड़ी संख्या में इमेज पर फ़िल्टर लगाता है. फिलहाल एप्लिकेशन इमेज को क्रमशः (sequentially) प्रोसेस करता है, लेकिन इमेज की संख्या बढ़ने के साथ यह बॉटलनेक बन रहा है. प्रदर्शन बेहतर करने के लिए आपको parallel stream आधारित समाधान लागू करना है.

Image क्लास आपके लिए पहले से लोड की गई है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Java में कोड ऑप्टिमाइज़ करना

पाठ्यक्रम देखें

अभ्यास निर्देश

  • तेज़ प्रोसेसिंग के लिए स्ट्रीम को parallel स्ट्रीम में बदलें.
  • स्ट्रीम में सभी इमेज पर फ़िल्टर लागू करें.
  • इमेज को एक ही लिस्ट में इकट्ठा करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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;
    }
}
कोड संपादित करें और चलाएँ