title image


Smiley Re: D5: zwei Threads langsamer als einer?
Bei Berechnungen bringt das nichts, da diese ja so gut wie nie auf etwas warten müssen, wie zB Daten von der Festplatte. Und wenn der Prozessor (das mit dem Hyperthreading ist ja kein echter zweiter Prozessor) durch ein Programm bereits zu 100% belastet ist, kann ein zweiter Thread logischerweise nichts mehr machen. Das System versucht natürlich aufzuteilen und hat daher den Overhead der Threadkontrolle und des Taskswitchings, das frisst Performance ohne was zu bringen. Bei zu vielen Threads kann ein System sogar ganz zum Stillstand kommen, da die gesamte Leistung nur für das Umschalten von einem Thread zum anderen benötigt wird. Genauso schlecht ist es natürlich, wenn ein Thread nur kurz arbeiten darf, da es dann viele, viele Umschaltungen gibt. Andererseits natürlich garantiert nur das, dass das System so wirkt, als laufe alles parallel. Denn wenn du dein Rechnenprogramm startest, wird für den Zeitraum der Berechnung der Rest am PC wohl so ziemlich einschlafen. Das zB die Maus noch geht, ist nur, weil diese eine höhere Threadpriorität hat, daher sollte man zB bei Benchmarks auch nicht die Maus bewegen, diese Leistung wird dem Benchmarkprogramm rigoros weggenommen.

Und selbst bei einem Zwei-Prozessor-System müsstest du so programmieren, dass die Threads auf verschiedenen Prozessoren laufen können - das geht, soweit mir bekannt ist, nicht automatisch. Sonst gäbe es ja schon viel mehr Programme, die ein Zwei-Prozessor-System ausnutzen könnten.

So hast du eben zwei Threads, die beide anscheinend parallel arbeiten, allerdings jeweils mit nur mehr 25% der Prozessorleistung, der Rest geht jeweils beim Umschalten verloren, daher dauert es im Endresultat dann doppelt so lange wie ohne Thread.



bye,

Helmut

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: