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. :)

Zveřejněno 06 October 09 09:22 by topas
Vedeno pod: ,

Upozornění na nové komentáře

Pokud chčeš dostávat upozornění emailem na změny u toho příspěvku,tak se zaregistruj zde.zde

Odebírat komentáře k tomuto příspěvku pomocí RSS

Komentář

# xl pharmacy said on December 9, 2011 7:41 PM:

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í.doba potřebná k výpočtu faktoriálu čísla 12 (12!) rekurzivně. Prověřuje rychlost interního volání funkce

Vytvoření nového komentáře

(povinný) 
(nepovinný)
(povinný) 
Opiš čísla, která vidíš na obrázku: