Performance Verbesserung durch Threads?

  • Allgemein

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Chris_Foerster.

    Performance Verbesserung durch Threads?

    Guten Morgen Forum,
    Ich bin momentan an der Entwicklung einer Anwendung, die eine große Menge an Daten, beim öffnen einer Form , auslesen muss. Dieser Prozess nimmt eine Menge Zeit in Anspruch, in dem die Anwendung nicht genutzt werden kann.

    Folgende Fragen stellt sich mir:
    1.: Ist es sinnvoll mehrere Threads zu implementieren, in denen man verschiedene Aktionen parallel ausführt?
    2.: Kann mir jemand erläutern wann Threads überhaupt Sinn machen?

    Vielen Dank im voraus
    LG Chris
    1. Ja
    2. Immer wenn Aufgaben länger als 50ms dauern und sich ansonsten gut parallelisieren lassen - und natürlich immer da, wo EINE langdauernde Aktion nicht ALLES (hpts. den UI Thread) blockieren soll.
    3. Nimm VB2010 und das CTP Async (oder die VS11 Beta)
    wie picoflop schon sagte, es macht Sinn. Wenn du nur willst, dass die Anwendung nicht hängt reicht ein einfacher Thread (oder vereinfacht die Verwendung des Backgroundworkers) aus. Einen Geschwindigkeitsbonus wirst du dadurch nicht erreichen.
    "Schneller" wird es nur, wenn du den Code parallelisierst. Unter dem .NET-Framework 4 geht das ganz einfach mit Parallel.For/ForEach. Bei ewiglangen Aufgaben kannst du damit die Geschwindigkeit nahezu um den Faktor "Anzahl der Kerne" verschnellern. Desshalb nicht alles parallelisieren, bei Aufgaben die relativ schnell erledigt sind (<50ms?) lohnt sich das nicht wirklich.

    Inwiefern das Async CTP weiterhilft weiß ich nicht (muss mir das mal anschauen^^), da würde mich nur stören, wenn es so ist, dass der Nutzer noch etwas "dazuinstallieren" muss - .NET-Framework 4 hat btw ja auch noch nicht jeder...
    Bei der Ansteuerung komplexer Maschinen und Anlagen macht es auch Sinn, einzelne Arbeits-Prozesse in unterschiedlichen Threads laufen zu lassen, damit die Software als Ganzes sich so verhalten kann wie die Maschine / Anlage: Ein Teil fällt aus, wird repariert und neu gestartet, der Rest läuft weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!