2009-11-02 39 views

Respuesta

35

Esto es Parallel LINQ. Es una forma de ejecutar consultas LINQ en paralelo en sistemas multi-core/multiprocesador, para (con suerte) acelerarlos.

Hay un buen artículo sobre esto en MSDN Magazine.

Para obtener detalles actuales y planes, le recomiendo leer artículos sobre el Parallel Programming with .NET Team Blog. Ellos son el equipo que implementa las extensiones paralelas, incluido PLINQ.

+2

MSDN Magazine no tiene enlaces profundos a un artículo, pero el blog sigue siendo bueno, por lo que aún puede obtener mi voto. –

1

de Wikipedia Parallel Extensions:

Parallel LINQ (PLINQ) es un motor de ejecución de la consulta simultánea de LINQ, la paralelización de la ejecución de consultas sobre los objetos (LINQ a Objetos) y los datos XML (LINQ to XML) . PLINQ está destinado a exponer el paralelismo de datos mediante el uso de consultas. Cualquier cálculo sobre objetos que se haya implementado como consultas se puede paralelizar con PLINQ. Sin embargo, los objetos deben implementar la interfaz IParallelEnumerable, que está definida por PLINQ. Internamente usa TPL para su ejecución.

+0

extensiones paralelas = PLINQ. PLINQ es una pequeña porción de las nuevas Extensiones Paralelas que se están agregando a .NET 4, pero no, de ninguna manera, todo el trabajo de PFX. –

+4

@Reed Por supuesto. Simplemente estaba vinculando a Wikipedia, que es el tercer resultado de una consulta de Google para "PLINQ" y tiene una sección en paralelo LINQ. Fue una respuesta trivial a una pregunta trivial. – Greg

10

Es una biblioteca que le permite realizar una consulta LINQ normal, dividirla en tareas más pequeñas y ejecutar cada tarea individual en varios subprocesos aprovechando los núcleos del procesador.

3

Le permite agregar .AsParallel a su LINQ para intentar ejecutar la consulta usando tantos procesadores como sea posible. Limpio, pero aún necesitas saber un poco si tu algoritmo es "paralelizable", no es mágico.

Básicamente, elimina la necesidad de administrar un grupo de subprocesos y gestiona la sincronización de los resultados que regresan de cada subproceso; normalmente, sin la biblioteca de extensiones paralelas, tendría que hacer esto manualmente.

+0

Tenga en cuenta que no todo tiene un .AsParallel para LINQ, un buen ejemplo es DataTable. – Si8

15

PLINQ es LINQ ejecutado en Paralelo, es decir, usando tanta potencia de procesamiento como la que tiene en su computadora actual.

Si tiene una computadora con 2 núcleos, como un procesador de doble núcleo, sus operadores de Language Integrated Query harán el trabajo en paralelo utilizando ambos núcleos.

Al usar "solo" LINQ no obtendrá el mismo rendimiento porque los operadores estándar de Language Integrated Query no paralelizarán su código. Eso significa que su código se ejecutará en serie y no aprovechará todos los núcleos de procesador disponibles.

Hay muchos operadores de consulta PLINQ capaces de ejecutar su código utilizando patrones paralelos bien conocidos.

Tome un vistazo a mi blog en el que muestro la velocidad hasta que se obtiene cuando se ejecuta una consulta LINQ simple en paralelo usando el método de extensión AsParallel:

Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing

Si desea profundizar utilizando PLINQ, yo aconsejo que lea:

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4