Script-Geschwindigkeit mit Measure-Command messen mit PowerShell
Die Windows PowerShell gewinnt immer mehr an Bedeutung, da diese sehr mächtig ist. Es gibt so gut wie nichts, was die PowerShell nicht erledigen kann. Deswegen werden in der heutigen Zeit immer mehr Scripte in ps1-Dateien geschrieben, da diese auch sehr schnell sind. Es gibt sogar die Möglichkeit die Script-Geschwindigkeit zu messen mit dem Befehl Measure-Command. In einem früheren Beitrag haben wir bereits erklärt, dass es bei der Definition von Strings darauf ankommt, ob ein Hochkomma oder ein Anführungszeichen genutzt wird. Bereits das hat Auswirkungen auf die Geschwindigkeit eines PowerShell Befehls. Wir zeigen euch, wie man mit Measure-Command die Geschwindigkeit der Abarbeitung messen kann.
Mit Measure-Command die Zeit der Ausführung messen
Mit diesem PowerShell CMDlet ist es möglich die Dauer der Abarbeitung eines Scripts zu messen. Hier wird die verstrichene Zeit gemessen, die PS zum Abarbeiten von Script-Blöcken oder einzelner cmdlets benötigt. Angegeben werden können alle möglichen Befehle. Die Dauer von Anweisungen sind meist sehr minimal. Interessant wird es aber beim Ausführen von großen Scripts mit mehreren hundert oder tausend Zeilen. Auch sehr interessant ist das Messen von Datenbank-Abfragen oder schreiben von Daten.
Verwenden von Measure-Command in PowerShell
Mit dem PowerShell Cmdlet (Commandlet) Measure-Command
kann man wie oben schon erwähnt die Dauer messen, wie lange eine gewisse Aktion dauert. Die Script-Geschwindigkeit ist oft ausschlaggebend für die Weiterverarbeitung von Daten. Doch wie verwendet man diesen Befehl?
Measure-Command { <BEFEHL> }
Der Befehl der gemessen werden soll, muss in geschweiften Klammern geschrieben werden. Ein Beispiel wäre hier:
Measure-Command {get-childitem "c:\windows\system32" -recurse}
Mit diesem Befehl werden alle Dateien im Angegebenen Verzeichnis aufgelistet. In der Auswertung am Schluss sieht man, dass PowerShell 866 Milli-Sekunden benötigt hat. Natürlich kann man ein komplettes Script einklammern und dadurch die Script-Geschwindigkeit auswerten.
Als zweites Beispiel habe ich eine Schleife, welche 100.000 mal durchlaufen wird und als Text “Laufzeit testen” ausgibt. Hier ist die Laufzeit um einiges länger:
Measure-Command { for ($i = 0; $i -lt 100000; $i++) { write-host 'Laufzeit testen.' } }
Days : 0 Hours : 0 Minutes : 1 Seconds : 24 Milliseconds : 24 Ticks : 840248369 TotalDays : 0,000972509686342593 TotalHours : 0,0233402324722222 TotalMinutes : 1,40041394833333 TotalSeconds : 84,0248369 TotalMilliseconds : 84024,8369
Hier sieht man, dass diese Operation 1 Minute, 24 Sekunden und 24 Millisekunden an Zeit benötigt hat. So einfach ist es eine Script-Geschwindigkeit testen zu können.
Unterschied zwischen Anführungszeichen und Apostroph
In einem früheren Beitrag haben wir schon die Unterschiede zwischen Anführungszeichen und eines Apostrophs beim Deklarieren von Strings aufgezeigt. Auch hier wurde eine Zeitmessung mit Measure-Command durchgeführt um die Unterschiede aufzuzeigen.
https://www.itnator.net/unterschied-hochkomma-und-anfuehrungszeichen-in-powershell/