Coma abbiamo visto nello script #281, una query PLINQ viene distribuita sui processori della macchina per ottimizzare le prestazioni. In virtù di questa distribuzione, l'ordinamento dei dati restituiti non è lo stesso dei dati che vengono processati in quanto la schedulazione dei thread che processano la lista dipende dal sistema operativo.
Tuttavia, se abbiamo la necessità di mantenere lo stesso ordine, possiamo ricorrere al metodo AsOrdered che in fase di merge dei dati restituiti ristabilisce l'ordine.
var result = (from p in persone.AsParallel().AsOrdered() where p.eta > 30 select p) .Take(10);
Grazie al metodo AsOrdered, le 10 persone che vengono restituite sono le prime 10 trovate nella lista originale. Senza AsOrdered, le 10 persone restituite sarebbero state prese in maniera randomica in quanto l'ordine dipende da quale thread finisce prima di processare la sua porzione di dati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Cancellare una run di un workflow di GitHub
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Change tracking e composition in Entity Framework
Testare il failover sulle region in Azure Storage
Creare una libreria CSS universale: Clip-path
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Eseguire script pre e post esecuzione di un workflow di GitHub
Migliorare l'organizzazione delle risorse con Azure Policy
Ottimizzare le performance usando Span<T> e il metodo Split