ist es schneller mit Threads



  • hallo,

    ist es schneller, wenn man zwei unabhängigen Aufgaben in Treads laufen läßt?

    mfg


  • Mod

    Kommt drauf an.

    1. Was sind das für Aufgaben?

    2. Hast du mehrere Prozessoren oder wenigstens nen P4 mit HT in deinem Rechner?

    ...



  • zu 2.:

    WENIGSTENS? Ich bin ja froh das ich meinen AMD Athlon XP 3000+ habe....
    Mal nebenbei: hat der auch sowas wie HT(irgendein AMD Äquivalent zu einer Pentiumtech.?)? 😃


  • Mod

    Pogo schrieb:

    zu 2.:

    WENIGSTENS? Ich bin ja froh das ich meinen AMD Athlon XP 3000+ habe....
    Mal nebenbei: hat der auch sowas wie HT(irgendein AMD Äquivalent zu einer Pentiumtech.?)? 😃

    Wenigstens in dem Sinne, dass durch das HT so eine Art "virtueller zweiter Prozessor" vorhanden ist. Der Athlon hat kein HT oder eine hiermit vergleichbare Technologie. Diese Technologie macht hier auch nicht soviel Sinn, weil der Athlon seine Funktionseinheiten eh besser auslastet als der P4. Der Athlon hat also nicht so viele ungenutzte Bereiche, so dass sich ein zusätzlicher "virtueller Prozessor" hier nicht lohnt. ...wenn man mal von "Reaktionszeiten" absieht.



  • generell gilt: hat man keine HT prozessoren oder multi prozessor systeme und man will einfach zwei algorithmen laufen lassen so sind threads sicher langsamer (alles zusammen - erzeugen halt doch overhead) als wenn du sie hintereinander ablaufen lässt

    nützlich sind sie auf solchen systemen bei parallelverarbeitung in graphischen anwendungen - sonst kanns sein das dein program nicht reagiert


  • Mod

    gomberl schrieb:

    generell gilt: hat man keine HT prozessoren oder multi prozessor systeme und man will einfach zwei algorithmen laufen lassen so sind threads sicher langsamer (alles zusammen - erzeugen halt doch overhead) als wenn du sie hintereinander ablaufen lässt

    Naja, ein paar Ausnahmen gibt es da schon. Es kann zum Beispiel sein, dass ein Algorithmus an irgendeiner Stelle auf etwas warten muss. Vielleicht auf irgendeine IO-Operation oder etwas ähnliches. Wenn soetwas vorliegt, dann kann es auch mit einem Prozessor Sinn machen, mehrere Threads zu verwenden.



  • da hast du recht - haette das mit graphischer ausgabe nicht so spezifizieren sollen sondern I/O hinschreiben sollen

    aber bei zwei straight-forward algorithmen gibst du mir schon recht, oder :p

    gomberl


  • Mod

    gomberl schrieb:

    aber bei zwei straight-forward algorithmen gibst du mir schon recht, oder :p

    😃 Da muss ich mir mal Gedanken drüber machen. Ist ja auch ne gewagte These von dir! 😃 ...aber im Normalfall hast du da sicherlich Recht.

    Ich stelle trotzdem mal folgende Frage in den Raum:

    Java ist auf vielen unterschiedlichen Plattformen zu Hause. Sollte man nicht alleine schon aus diesem Grund alle Algorithmen, die viel Leistung benötigen, auf "n" Prozessoren auslegen, also parallelisieren? Oder ist der Overhead einfach so groß, dass sich so eine Implementierung nicht lohnt? Man kann ja mit Java sogar die Anzahl der verfügbaren Prozessoren ermitteln und somit die Parallelität zur Laufzeit anpassen.

    (...ich denke bei meinem Bildverarbeitungsprogramm nämlich gerade darüber nach, ob ich das so machen sollte. Dummerweise habe ich kein Multiprozessorsystem zum Testen zur Verfügung so, dass ich dieses "Feature" wohl in jedem Fall nach hinten schieben muss.)



  • btw:

    unter linux werden JAVA threads auf linux system-threads also im prinzip auf
    linux prozesse abgebildet.
    ist das unter win genauso ? vermutlich schon.


Anmelden zum Antworten