Domanda

Eseguire i metodi paralleli paralleli. Per e paralleli.foreach,

fornire internamente il proprio bilanciamento e il loro partizionamento del carico per funzionare meglio?

In tal caso e quali circostanze vuoi scrivere Crea le tue partizioni usando la classe del partizione per migliorare le prestazioni?

È stato utile?

Soluzione

Le routine hanno fornito il proprio partizionamento.

Si basano su scenari "tipici", ma a volte possono richiedere una guida, in particolare in situazioni insolite.

Ad esempio, il partizionamento predefinito per IEnumerable<T> implementazioni (che non implementano IList<T>) inizierà con un piccolo gruppo per attività e crescerà lentamente di dimensioni. Tuttavia, se conosci il tuo IEnumerable<T> sta per nutrire lentamente un elemento alla volta, questo causerà un blocco, come il Parallel La classe "aspetterà" l'articolo successivo fino a quando non riceverà abbastanza elementi per una partizione e la pianifica.

Fornendo il tuo partizionatore, puoi prevenirlo e ottenere un migliore rendimento.

Un altro ottimo esempio di dove un partizionatore personalizzato aiuta è se si dispone di piccole quantità di lavoro per loop. In questo caso, il partizionamento di te stesso e il lavoro sulla partizione evita inutili spese generali. Questo è coperto da Come: accelerare piccoli corpi ad anello Pagina su msdn.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top