2016-04-15 5 views
0

Ich habe 10 verschiedene Methoden mit dem gleichen Rückgabetyp "Liste". Ich füge alle Methoden zu einer Aufgabe hinzu. Iterieren Sie die Aufgabenliste und führen Sie sie aus. Ich muss wissen, welches für die Leistungssteigerung am besten ist. Task.whenAny oder Parallel.invoke?C# Liste der Aufgaben und mit task.whenAny Leistung

Schätzen Sie Ihre Antworten.

+0

Es hängt ganz davon ab, was Ihre Aufgaben tun. Es gibt möglicherweise keine Leistungssteigerung, indem sie parallel ausgeführt werden, und in der Tat können sich einige Dinge verschlechtern (z. B. wenn zwei Aufgaben gleichzeitig versuchen, auf verschiedene Bereiche der gleichen physischen Festplatte zuzugreifen). –

+0

Es könnte von der Anzahl der CPUs in Ihrem Computer und der Menge an Speicher in Ihrem Computer abhängen. Die Leistung kann erheblich verlangsamt werden, wenn zwischen dem Speicher und dem Auslagerungsspeicher (auf der Festplatte) viel Seitenaustausch stattfindet. Wenn Sie also die Anzahl der parallelen Prozesse erhöhen, kann die Anzahl der Swaps erhöht werden, wenn Sie nicht genügend Arbeitsspeicher zur Unterstützung der parallelen Tasks haben. Normalerweise hat jede CPU ihren eigenen dedizierten RAM, so dass eine Erhöhung von CPUs den RAM erhöht und gewöhnlich den Austausch reduziert. – jdweng

Antwort

0

Task.WhenAll wird darauf warten, dass sie alle parallel abgeschlossen werden.

Task.WhenAny wird warten, bis der erste beendet ist.

Task.WhenAll ist wahrscheinlich, was Sie wollen und ist auch gut für die Leistung.

Verwandte Themen