Recentemente ho fatto un paio di misure su Linq e Plinq. Non riesco a vedere in quale situazione abbia un reale vantaggio significativo di Plinq.Ha qualche vantaggio reale su PLINQ?
ho trovato molti esempi come:
Enumerable.Range(0, 10000).AsParallel().ForAll(_ => Thread.Sleep(50000));
Questo è ad esempio del tutto inutile, perché può essere parallized con il grado di 10000 e sì allora sarà più veloce 10000 volte, ma è raro in un business applicazione per eseguire il ciclo 10000 volte e creare "lavori IO".
Se qualcuno può citare un esempio, si prega di postarlo.
Plinq è disponibile solo per Linq to Objects e Linq to XML. Non consigliato di utilizzarlo in un'applicazione che gira su webserver (ha la propria gestione dei thread). Quindi le nostre opportunità sono ridotte ad applicazioni desktop che hanno più core.
Di solito scrivo query in linq che vengono eseguite sequenzialmente in frazioni di secondo. Se lo faccio in parallelo e funzionerà in parallelo, allora sarà più veloce, ma a chi importa? Penso che sia ancora abbastanza veloce. L'utente finale non vedrà alcuna differenza.
Posso immaginare un esempio quando qualcuno riceve tutti i dati dal DB e esegue una query in memoria. Allora forse è utile, ma è un progetto sbagliato.
TPL è una buona roba per la programmazione asyncron, ma non sono ancora sicuro che Plinq sia uno strumento utile.
Qualcuno ha un'esperienza positiva a riguardo?
* "Non si supponga che Parallel sia sempre più veloce" * ... È necessario esaminare [Potential Pitfalls with PLINQ] (http://msdn.microsoft.com/en-us/library/dd997403%28v= vs.110% 29.aspx) !! –
Grazie, ho già esaminato :) – speti43
Non c'è bisogno di aggiustare ciò che non è rotto. PLINQ potrebbe avere senso per i dati di grandi dimensioni su computer multi-core. –