ComenzarEmpieza gratis

Optimización del procesamiento de imágenes con streams paralelos

Estás trabajando en una aplicación de procesamiento de imágenes que aplica filtros a grandes lotes de imágenes. Actualmente, la aplicación procesa las imágenes de forma secuencial, pero esto se está convirtiendo en un cuello de botella a medida que aumenta el número de imágenes. Tu tarea es implementar una solución con streams paralelos para mejorar el rendimiento.

La clase Image ya está precargada para ti.

Este ejercicio forma parte del curso

Optimizing Code in Java

Ver curso

Instrucciones del ejercicio

  • Convierte el stream a un stream paralelo para acelerar el procesamiento.
  • Aplica los filtros a todas las imágenes del stream.
  • Recoge las imágenes en una única lista.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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;
    }
}
Editar y ejecutar código