Powershell: Hohe Auslastung durch While Schleifen reduzieren

Startseite – Aktivität Foren Offtopic Powershell: Hohe Auslastung durch While Schleifen reduzieren

This topic contains 0 replies, has 1 voice, and was last updated by  Markus Büttner 3 months ago.

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #1641

    Markus Büttner
    Participant

    wartet man in Powershell mit einer While Schleife auf das Zutreffen einer Bedingung (z.B. Ende eines Threads, oder Runspaces), kann dies zu sehr hohen CPU Lasten führen. Insbesondere wenn man innerhalb der While Schleife keinen, oder nur wenig Code ausführt. Dabei wird unnötigerweise die komplette Rechenleistung des Kerns auf dem der wartende Thread läuft, gebunden.
     
    Auslastung eines Kerns mit 100 Prozent:

    
    while ($true) {
    }
    

     
    Verbessern kann man dies auf eine sehr geringe Auslastung mit einem kurzen Start-Sleep Befehl innerhalb der While Schleife.
     
    Auslastung eines Kerns mit unter einem Prozent (natürlich je nach CPU):

    
    while ($true) {
    Start-Sleep -Milliseconds 1
    }
    

    Einziger Nachteil, man verliert evtl. eine Millisekunde in seinem Skript. Das sollte aber in den meisten Fällen zu verkraften sein 😉
    Natürlich kann man auch etwas höhere Werte verwenden, 100 Millisekunden sind immerhin auch nur eine zehntel Sekunde.

Viewing 1 post (of 1 total)

You must be logged in to reply to this topic.