Oggi ho provato a fare qualche ottimizzazione sull'istruzione foreach
, che funziona su XDocument
.Perché non Parallel.ForEach esegue più thread?
Prima di ottimizzazione:
foreach (XElement elem in xDoc.Descendants("APSEvent").ToList())
{
//some operations
}
Dopo l'ottimizzazione:
Parallel.ForEach(xDoc.Descendants("APSEvent").ToList(), elem =>
{
//same operations
});
ho visto che .NET in Parallel.ForEach(...)
ha aperto solo un thread! Di conseguenza, il periodo di Parallel
era più grande dello standard foreach
.
Per quale motivo .NET ha aperto solo 1 thread? A causa del blocco del file? Grazie
Quanti core o processori logici avete nel vostro computer? Quanti elementi ci sono nella lista? –
Non riesco a vedere nessuna relazione tra il titolo e la domanda. –
Christian.K, ho un server con processore Xeon e RAM da 8 GB (Dell PowerEdge R210) con sistema operativo MS Server2008. Penso che, non dipendendo da quanti elementi ho nel documento XML, penso che la penalità di tempo sia dovuta al blocco dei file. – zzfima