
Wie finde ich die maximale Anzahl von Threads heraus, die ich verwenden kann? Ich bin neu in der Programmierung und versuche herauszufinden, was ich wissen muss. Ich muss 950 GB an Dateien von Amazon S3 herunterladen. Ich dachte, ich könnte zwei Threads verwenden, die jeweils die Hälfte dieser Menge herunterladen und parallel laufen.
Ich hoffe, den Massendatendownload von Amazon S3 durch Multithreading meiner Anwendung beschleunigen zu können. Zunächst müsste ich aber wissen, ob mein Computer Multithreading überhaupt unterstützt.
Computer-Spezifikationen:
- Modell: MacBook (13", Mitte 2010, A1342)
- Prozessor:Intel Core Duo mit 2,4 GHz
- Speicher: 8 GB 1067 MHz DDR3
- Software: MacOS Sierra 10.12.6
Der Prozessor ist sehr alt und wird nicht mehr hergestellt, er unterstützt also kein Intel Hyperthreading. Ich bin mir nicht sicher, ob er Multithreading unterstützt. Aber wenn er Multithreading unterstützt, wie viele Threads kann er unterstützen und würde es Auswirkungen auf die Leistung haben, wenn ich zu viele Threads verwende?
Bitte korrigieren Sie mich, wenn ich falsch liege, aber ich habe gelesen, dassEin Kern ohne Hyperthreading kann nur 1 Thread unterstützen, daher denke ich, dass mein Prozessor vielleicht bis zu 2 Threads unterstützen kann, jeder weitere Thread darüber hinaus hätte dann nur noch vernachlässigbare Auswirkungen.
Antwort1
Ihre Frage enthält mehrere falsche Annahmen. Lassen Sie mich das hier klarstellen:
- Multithreading ist sogar auf Single-Core-CPUs möglich.Die Ausführung wird einfach zeitlich aufgeteilt, so dass zu jedem beliebigen Zeitpunkt 1 Thread aktiv ist, die Ausführung aller Threads jedoch parallel erfolgt.
- Multithreading ist nicht gleichbedeutend mit einer Beschleunigung.Bei naiver Gestaltung ist eine Multithread-App immer zehn- oder sogar hundertmal langsamer als eine Singlethread-App.
- Das Herunterladen aus externen Netzwerken ist in 99 % der Fälle nicht von Multithreading abhängig.Es lohnt sich vielleicht, einen Blick auf Multi-Range-HTTP-Downloads zu werfen, wie sie in Apps wie NetAnts, ReGet und anderen aus der DFÜ-Modem-Ära implementiert wurden. Es gibt jedoch keine Garantie dafür, dass Multi-Range-Downloads schneller sind als normale Downloads, da es unterschiedliche Netzwerkrichtlinien und beteiligte Server gibt.
Also, alles klar. Sie müssen auf jeden Fall Kennzahlen in Ihrer App sammeln: Welcher Vorgang ist am langsamsten? Und ihn dann neu gestalten, um mehr Geschwindigkeit zu erreichen.
Antwort2
Wie kann ich die maximale Anzahl an Threads herausfinden, die ich verwenden kann?
Intel Core Duo verfügt über 2 Threads, da es sich um einen 2-Kern-Single-Thread-Prozessor handelt. Jeder Kern hat die Fähigkeit eines einzelnen Threads.
Aber wenn es Multithreading unterstützt, wie viele Threads kann es unterstützen und würde es Auswirkungen auf die Leistung haben, wenn ich zu viele Threads verwende?
Es unterstützt 2 Threads.
daher denke ich, dass mein Prozessor vielleicht bis zu 2 Threads unterstützen kann, jeder weitere Thread darüber hinaus hätte dann nur vernachlässigbare Auswirkungen.
Es ist nicht in der Lage, mehr als 2 Threads zu verarbeiten. Ihre Multithread-Anwendung hätte nur zwei Threads, da Sie aufgrund der Hardware nur 2 Threads generieren können.