DE .NET, SQLSERVER Y MÁS, APRENDE CONMIGO!✔

Desarrollo de todo tipo de aplicaciones y Administración de Base de datos con Tecnología Microsoft


UNETE

Parallel en C#

0

 

Parallel For en C#

En este artículo, voy a discutir el Parallel For estático en C# con ejemplos. Lea nuestro artículo anterior antes de continuar con este artículo donde discutimos los conceptos básicos de la programación paralela en C#. Como parte de este artículo, analizaremos la necesidad y el uso del bucle For paralelo en comparación con el bucle for de C#. Entonces, comencemos la discusión con una de las preguntas de entrevista más frecuentes.

¿Cuál es la diferencia entre el bucle Parallel For y el bucle for de C# estándar?

La principal diferencia entre el bucle Parallel For y el bucle for C# estándar es la siguiente

  1. En el caso del bucle for estándar de C#, el bucle se ejecutará con un solo subproceso, mientras que, en el caso del bucle For paralelo, el bucle se ejecutará con varios subprocesos.
  2. La segunda diferencia es que, en el caso del bucle for estándar de C#, el bucle se itera en orden secuencial mientras que, en el caso del bucle For paralelo, el orden de la iteración no va a ser secuencial.

 

Cuando las iteraciones son independientes entre sí, significa que las iteraciones posteriores no necesitan las actualizaciones de estado realizadas por las iteraciones anteriores, entonces, en tales casos, necesitamos usar Task Parallel Library (TPL) para ejecutar cada iteración en paralelo en todos los núcleos disponibles. Además, la iteración debería ser una iteración costosa; de lo contrario, obtendremos un rendimiento negativo, que también discutiremos como parte de este artículo.

Bucle Foreach

El bucle Foreach en C# se ejecuta en un solo subproceso y el procesamiento se realiza secuencialmente uno por uno. El bucle Foreach es una característica básica de C# y está disponible desde C# 1.0. Su ejecución es más lenta que  la de Parallel.Foreach en la mayoría de los casos.

Bucle Parallel.ForEach

El bucle Parallel.ForEach en C# se ejecuta en varios subprocesos y el procesamiento se lleva a cabo de manera paralela. El bucle Parallel.ForEach no es una característica básica de C# y está disponible desde C# 4.0 y versiones posteriores. Antes de C# 4.0 no podemos usarlo. Su ejecución es más rápida que foreach en la mayoría de los casos. Para usar el ciclo Parallel.ForEach, necesitamos importar el espacio de nombres System.Threading.Tasks en la directiva de uso.

Pero conoces bien tu aplicación y puedes decidir cuál quieres usar.

Estoy dando 2 ejemplos, en el primer ejemplo, el bucle foreach tradicional es más rápido que el bucle Parallel.foreach, mientras que en el segundo ejemplo, el bucle foreach tradicional es muy lento en comparación con Parallel.foreach.

 



Este es el resultado, fijese la diferencia de tiempos entre un bucle for y el otro con el for parallel






Tal vez te interesen estas entradas

No hay comentarios