Skriptování v .NETu 7 (PowerShell)
PowerShell určitě není třeba představovat – jedná se o shell a skriptovací jazyk z díly Microsoftu. Jeho syntaxe je poměrně intuitivní a přehledná. Hlavní výhodu jeho použití jako skriptovacího jazyka vidím právě v jeho rozšíření a známosti nejenom v programátorských kruzích - i správcové sítí či administrátoři obecně by jej mohli znát. O PowerShellu toho bylo napsáno opravdu hodně. Pojďme se ale zabývat něčím, co moc popsáno není, a to je použití Powershellu jako skriptovacího jazyka.
Použití
Nyní si ukážeme, jak integrovat PowerShell jako skriptovací jazyk. Nejlepší bude, když do projektu přidáme referenci na System.Management.Automation.dll, kterou najdeme po instalaci PowerShellu v GAC. Potom stačí tento jednoduchý kód:
Runspace rs = RunspaceFactory.CreateRunspace();
rs.Open();
Pipeline p = rs.CreatePipeline(" \"World!\".Insert(0, \"Hello \")");
// spustit a vypsat vysledek
foreach(PSObject o in p.Invoke())
Console.WriteLine(o.ToString());
Více informací v MSDN k Powershell Runspace.
Syntaxe PowerShellu
$found = false
$abc = 7, 2, 4, 5, 6
for ($i=1; $i -le 5; $i++)
{
if ($abc[$i] -gt 5)
{
$found = true
}
}
Testování
Z důvodu pomalosti volání PowerShellu jsem místo milionu opakování zvolil pouze deset tisíc, a výsledek vynásobil 100x, aby byl zachován poměr rychlostí vůči ostatním jazykům.
| Parsování / kompilace | první 1300 ms další okolo 130 ms |
| Float test | 3714700 ms |
| Faktorial test | 19126400 ms |
| Zápis hodnoty do skriptu | 1200 ms |
| Čtení hodnoty ze skriptu | 1100 ms |
| Vytvoření instance | 4626000 ms |
Parsování / kompilace – doba, kterou potřebuje skriptovací engine k inicializaci (parsování nebo kompilaci zdrojových kódů).
Float test – doba potřebná k vypočítání jednoho milionu rovnic sin(30)*sin(30)+cos(30)*cos(30).
Faktorial test – doba potřebná k výpočtu faktoriálu čísla 12 (12!) rekurzivně. Prověřuje rychlost interního volání funkce, vyhodnocování podmínek a počítání s celými čísly. Test je volán milionkrát.
Zápis hodnoty do skriptu – milionkrát zapíše hodnotu z hlavního programu do skriptu.
Čtení hodnoty ze skriptu – milionkrát přečte hodnotu ze skriptu.
Vytvoření instance – vytvoří milion instancí objektu ze skriptu.
Závěr
PowerShell nám uzavřel tento miniseriál o skriptování. Myslím, že jako základ to stačí a každý si vybere jazyk, který je mu nejbližší. Aby se však lépe vybíralo, budou závěrečné 2 díly srovnávací.
PS: A budou i nějaké grafy. :)