Skriptování v .NETu 9 (Praktické testy, System.AddIn)

Ačkoliv by se předchozí díl mohl zdát (podle názvu) závěrečný, opak je pravdou. :) Kategorie, ve kterých jsem skriptovací jazyky testoval, měly totiž jeden společný parametr – byly závislé na komunikaci mezi skriptem a hlavním programem. Další parametr, který nás zajímá, je rychlost vyhodnocování samotného skriptu.

L-Systém fraktály

Vytvořil jsem jednoduchý testovací program, který vykresluje L-Systém fraktály. K ovládání vykreslovacího kurzoru (želvičky) se nepoužívá gramatika, ale právě různé skriptovací jazyky. Pro více informací o tomto druhu fraktálů doporučuji článek L-Systémy: přírodní objekty i umělé artefakty, který vyšel na serveru Root.cz. Aby měly skriptovací jazyky alespoň nějakou práci, budou vykreslovat kapradinu, kterou můžete vidět na obrázku:

kapradina

Nemá cenu popisovat jednotlivé metody želvičky. Pro podrobnosti si, prosím, stáhněte celý projekt v závěru článku. Snad jen pro úplnost pseudokód, který vykonávaly všechny testovací skriptovací jazyky:

function Fern(size)
    if size <5 then
       return        
    end
    turtle.Forward(size / 20)
    turtle.Left(80)
    Fern(size * 0.3)
    turtle.Right(82)
    turtle.Forward(size / 20)
    turtle.Right(80)
    Fern(size * 0.3)
    turtle.Left(78)
    Fern(size * 0.9)
    turtle.Left(2)
    turtle.Backward(size / 20)
    turtle.Left(2)
    turtle.Backward(size / 20)            
end
Fern(300)

 

System.AddIn Framework

Už nadpis sliboval průzkum technologie System.AddIn (.NET 3.5) – jedná se o framework, pomocí kterého můžeme poměrně jednoduše vyvinout aplikaci rozšiřitelnou pomocí zásuvných modulů. Tento framework má výhodu hlavně v tom, že umožňuje řešit zpětnou kompatibilitu jednotlivých zásuvných addinů, možnost jejich uvolnění z paměti a ochranu hlavního programu proti chybě v addinu (addiny běží v oddělené AppDomain).

O System.AddIn Frameworku toho bylo napsáno poměrně hodně a určitě stojí za prozkoumání. Mohu doporučit:

Co je důležité pro naše testovaní je fakt, že práce s Addinem (pluginem, zásuvným modulem, jak chcete...) určitě bude trvat nějaký čas navíc, protože hlavní program musí komunikovat s jinou AppDomain.  O rychlosti komunikace rozhoduje, jestli se předávaný objekt mezi addinem a hlavním programem předává hodnotou serializovaný (atributem [Serializable]) nebo odkazem (zděděný ze třídy MarshalByRefObject).

Testování

Test ukazuje, jak rychle lze volat metody proměnné (instance určité třídy, která byla vytvořená v hlavním programu) ze skriptu. Testování nezahrnuje režii, která je potřeba k vytvoření testovacího engine. Proto testujeme pouze následující kroky:

  • Parsování a kompilace (vyhodnocení) skriptu.
  • Předání vytvořené instance želvičky.
  • Rekurzivní vykreslení kapradiny ve skriptovacím jazyku.

V testování System.AddIn frameworku se testuje pouze to, jestli je objekt želvičky předáván mezi AppDomain:

Dobu potřebnou ke komunikaci mezi AppDomain jsem měřil tak, že jsem vypočítal rozdíl mezi dobou výpočtu v hlavním programu a napevno naprogramovaným kódem v addinu (bez použití skriptovacího jazyka).

Pár poznámek: Skriptovací knihovna DotScript, kterou jsem popisoval v prvním dílu seriálu, se neosvědčila – metoda, která měla přidat referenci na assembly s želvičkou, nefungovala. Omluvou budiž to, že je knihovna DotScript v beta verzi (bohužel jsem neměl čas problém blíže zkoumat). DotScript jsem proto nahradil parsováním C# pomocí CodeDomProvideru. 

Také je třeba poznamenat, že v PowerShellu se mi nepodařilo (ačkoliv jsem zkoušel na hodně místech použít přetypování na celá čísla) docílit vykreslení kapradiny stejně. Kapradina se vykreslí bohatší, což PowerShell trochu znevýhodňuje – ale nemělo by moc zásadně.

Testování probíhalo na počítači s procesorem Intel Core Duo 2 (P8400) @ 2.26 GHz, 4 GB RAM, operační systém Windows Vista Ultimate.

Výsledky

Jazyk MarshalByRefObject [Serializable]
Lokální výpočet 70 ms 71 ms
Výpočet v addinu 937 ms 3090 ms
Boo 1026 ms 3258 ms
C# 970 ms 3125 ms
IronPython 3590 ms 5173 ms
IronRuby 2856 ms 5155 ms
JScript .NET 1475 ms 5097 ms
Lua 2506 ms 5979 ms
PowerShell 408669 ms 411687 ms
 
Komunikace 866 ms 3018 ms

 

A nyní trochu grafů... :)

speed1a

speed1b

Protože se z grafů s logaritmickým měřítkem těžko odhadují poměry komunikací mezi AppDomain a vlastním prováděním skriptů, udělal jsem ještě 2 grafy, kde je poměr hezky vidět. Na těch už není PowerShell, který by je svým dlouhým časem zkresloval.

speed2a 

 speed2b

Závěr

V tomto praktickém testu se opět ukázalo, že skriptovací jazyky můžeme rozdělit do 3 skupin, které jsou zhruba stejně rychlé:

  • Ty, které se překládají do CIL (C#,Boo,JScript).
  • Ty, které používají Dynamic Languga Runtime (IronPython, IronRuby).
  • Ostatní – poměrně rychlá Lua, a velmi pomalý PowerShell.

Také jsem chtěl ukázat, jaký vliv může mít opakované používaní objektu z jiné AppDomain a jaký vliv na to má předávaní odkazem (MarshalByRefObject) a hodnotou ([Serializable]).

Pro vytvoření tohoto ukázkového programu bylo použití jiných AppDomain nezbytné, protože současná verze IronRuby a IronPython používá sice stejné assembly Dynamic Language Runtime, ale jiné verze. Jindy je třeba toto řešení zvážit z důvodu režie, kterou má komunikace mezi AppDomian.

Pro detaily k jednotlivým skriptovacím jazykům, prosím, zavítejte do předcházejících dílů seriálu.

Ke stažení

Myslím, že na závěr by se slušelo dát ke stažení celý projekt pro vykreslování L-Systém kapradiny pomocí skriptů.

Testovací program byl vytvořen narychlo a pouze pro účely testování, tak prosím o kolegiální toleranci. :)

Zveřejněno 13 října 09 11:28 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ář

# .NET i jiné ... said on října 19, 2009 20:46:

Nahromadilo se mi tu plno otevřených záložek v přenosném FF a protože se k nim vrátím “někdy”, tak tady

# Jakub Müller said on října 20, 2009 16:35:

Díky za články, pěkné porovnání.

# Oliver said on března 5, 2013 20:27:

Such a nice post. I like to read.

http://onlinerx4all.com/kamagra-oral-jelly-100mg-brand.html

http://onlinerx4all.com/kamagra_brand.html

# KelTeerly said on června 28, 2017 19:30:

Isotretinoin Delivered On Saturday Hawaii  [url=http://cheapviausa.com]viagra[/url] Pharmaceuticals No Prescription

# KelTeerly said on července 1, 2017 15:16:

Cheap Viagra Without A Script  [url=http://cialonline.com]cialis[/url] Where To Buy Cialis 20mg In Uk

# KelTeerly said on července 6, 2017 23:01:

Osu Cialis Commander  [url=http://levinorx.com]viagra[/url] Viagra Brevetto Scadenza

# ChasRegmep said on července 7, 2017 13:28:

Take Flomax At Night  [url=http://onlinecial.com]cheap cialis[/url] Cold Balm

# ChasRegmep said on července 7, 2017 13:28:

Take Flomax At Night  [url=http://onlinecial.com]cheap cialis[/url] Cold Balm

# Kennglalcops said on července 7, 2017 13:31:

Levitra Senza Ricetta  [url=http://femalecial.com]cialis buy online[/url] Kamagra And Hiv

# KelTeerly said on července 10, 2017 14:13:

Amoxicillin For Bronchial Infections  [url=http://levinorx.com]buy viagra online[/url] Levitra And Cialis Online

# ChasRegmep said on července 11, 2017 16:29:

Kamagra Oral Jelly 100mg Offers  [url=http://levinorx.com]viagra[/url] Buy Dapoxetine

# ChasRegmep said on července 11, 2017 16:29:

Kamagra Oral Jelly 100mg Offers  [url=http://levinorx.com]viagra[/url] Buy Dapoxetine

# Kennglalcops said on července 11, 2017 22:52:

Prednisolone Over The Counter  [url=http://lowpricevia.com]generic viagra[/url] Farmacie Online Tamoxifen

# Kennglalcops said on července 11, 2017 22:52:

Prednisolone Over The Counter  [url=http://lowpricevia.com]generic viagra[/url] Farmacie Online Tamoxifen

# KelTeerly said on července 16, 2017 23:34:

100 Mg Viagra Pfizer  [url=http://cialvia.com]cialis[/url] Cialis Generic Overnight Shipping

# ChasRegmep said on července 17, 2017 12:49:

Amantadine Buy Online  [url=http://pricescial.com]buy cialis[/url] Priligy Andorra Precio

# ChasRegmep said on července 17, 2017 12:49:

Amantadine Buy Online  [url=http://pricescial.com]buy cialis[/url] Priligy Andorra Precio

# Kennglalcops said on července 17, 2017 13:18:

Stendra Vs Viagra  [url=http://buytadalaf.com]cialis[/url] Is There Such Thing As Generic Viagra

# ChasRegmep said on července 31, 2017 12:03:

Best Price Viagra Usa  [url=http://lowpricevia.com]viagra[/url] Comprare Viagra In Germania

# KelTeerly said on července 31, 2017 16:32:

Cialis En Farmacias  [url=http://lowpricevia.com]buy viagra[/url] Buy Cialis No Prescription

# RonbuIt said on října 2, 2017 16:02:

Amoxil Gouttes Pediatriques Propecia To Increase Facial Hair Second Day Reaction Side Effects Keflex  [url=http://leviprices.com]levitra on line[/url] Cost For Viagra Without Insurance 283  

# RonbuIt said on října 13, 2017 17:24:

Taking Amoxicillin During Ovulation  [url=http://leviprices.com]levitra wholesale no prescription[/url] Kamagra Jelly Amazon Zithromax Itchy Hands  

# RonbuIt said on října 15, 2017 16:30:

Zithromax Gum Disease  [url=http://ordercheapvia.com]viagra[/url] Europharmacy Ed Medicine Kamagra Fast  

# RonbuIt said on října 30, 2017 21:47:

Effets Secondaires Cialis 20 Mg Vous Peut Durer Plus Longtemps Can Amoxicillin Cause Yeast Infections  [url=http://cheapviapills.com]viagra[/url] Isotretinoin For Sale  

# RonbuIt said on listopadu 4, 2017 20:30:

Buy Ed  [url=http://orderlevi.com]levitra without a script[/url] Meds Without Perscription Amoxicillin Uses Diarrhea  

# Isabelsouff said on února 2, 2018 2:32:

weight loss prescription drugs

[url=http://regimenforfeit.com/]weight loss supplements for women[/url]

<a href="http://regimenforfeit.com/">best diet pills that work</a>

appetite suppressant

# Laurames said on února 2, 2018 12:32:

diet pills that really work

[url=http://regimenforfeit.com/]weight loss pills for men[/url]

<a href="http://regimenforfeit.com/">new diet pill</a>

appetite suppressant

# Nancymus said on února 3, 2018 6:48:

pills to lose weight

[url=http://regimenforfeit.com/]weight loss pills for women[/url]

<a href="http://regimenforfeit.com/">weight loss pill</a>

weight loss drugs

# SherlynVep said on února 9, 2018 1:08:

top weight loss supplements

[url=http://regimenforfeit.com/]appetite suppressants[/url]

<a href="http://regimenforfeit.com/">best diet supplements</a>

best weight loss pill

# ChrisAlaps said on února 12, 2018 21:15:

windows 10 free upgrade

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows 10 store</a>

defer upgrades in windows 10

[url=http://opgemmje.com/#]update windows 10[/url]

windows 10 free upgrade

# KerryMof said on února 12, 2018 23:38:

windowed

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows live sign in</a>

windows explorer

[url=http://opgemmje.com/#]windows 8.1[/url]

windows d

# LeeannBlelf said on února 13, 2018 0:08:

alli weight loss reviews

[url=http://regimenforfeit.com/]diet pill[/url]

<a href="http://regimenforfeit.com/">best diet pills for weight loss</a>

weight loss pills that work

# RamonKeD said on února 13, 2018 13:36:

updates windows 10

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows 10 store</a>

upgrade to windows 10

[url=http://opgemmje.com/#]win 10[/url]

microsoft access

# Billystype said on února 13, 2018 17:23:

microsoft updates

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows live sign in</a>

office 365 login

[url=http://opgemmje.com/#]windows live[/url]

windows updates

# RamonKeD said on února 14, 2018 4:05:

update windows

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows live sign in</a>

windows updates

[url=http://opgemmje.com/#]windows store[/url]

aluminium windows

# Billystype said on února 14, 2018 6:57:

office 365

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows update</a>

update microsoft windows 10

[url=http://opgemmje.com/#]windows updates[/url]

support.microsoft.com/help

# WilliamGak said on února 14, 2018 21:49:

update microsoft windows 10

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows update</a>

updates windows 10

[url=http://opgemmje.com/#]windows live[/url]

tiworker.exe windows modules installer worker

# RonaldRen said on února 15, 2018 18:57:

microsoft windows movie maker

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows 8</a>

windows 1

[url=http://opgemmje.com/#]microsoft windows[/url]

windows.microsoft.com

# Rogerchimb said on února 15, 2018 21:42:

safari for windows

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows store</a>

windows live mail login

[url=http://opgemmje.com/#]windows 10 store[/url]

microsoft store

# Georgeglype said on února 16, 2018 7:33:

microsoft word download

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows server</a>

http //go.microsoft.com/fwlink/p/

[url=http://opgemmje.com/#]windows updates[/url]

microsoft excel

# TommyDek said on února 16, 2018 13:42:

microsoft windows 10 update

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows 8</a>

microsoft onenote

[url=http://opgemmje.com/#]windows 10 store[/url]

aluminium windows

# JamesHib said on února 16, 2018 16:45:

windows movie maker

<a href="http://opgemmje.com/#">windows">http://opgemmje.com/#">windows update</a>

jason windows

[url=http://opgemmje.com/#]windows store[/url]

microsoft office download

# DanielFum said on února 20, 2018 9:30:

microsoft store app

<a href="http://hmumicrosoftjfg.com/#">office">http://hmumicrosoftjfg.com/#">office download</a>

microsoft word

[url=http://hmumicrosoftjfg.com/#]microsoft word[/url]

microsoft store locations

# Stephences said on února 20, 2018 16:07:

microsoft office support

<a href="http://hmumicrosoftjfg.com/#">office">http://hmumicrosoftjfg.com/#">office 2013</a>

free resume templates microsoft word

[url=http://hmumicrosoftjfg.com/#]office download[/url]

office microsoft

# Fidelgop said on února 21, 2018 5:26:

microsoft 365 login

<a href="http://hmumicrosoftjfg.com/#">microsoft">http://hmumicrosoftjfg.com/#">microsoft store</a>

microsoft 365 login

[url=http://hmumicrosoftjfg.com/#]microsoft office[/url]

microsoft store locator

# VincentLix said on února 21, 2018 7:56:

office 365 login

<a href="http://hmumicrosoftjfg.com/#">office">http://hmumicrosoftjfg.com/#">office 2013</a>

microsoft office 2010 free download

[url=http://hmumicrosoftjfg.com/#]microsoft office[/url]

microsoft office 2013 download

# Danielseels said on února 21, 2018 17:03:

office

<a href="http://hmumicrosoftjfg.com/#">office">http://hmumicrosoftjfg.com/#">office download</a>

online microsoft word

[url=http://hmumicrosoftjfg.com/#]microsoft excel[/url]

outlook 365

Vytvoření nového komentáře

(povinný) 
(nepovinný)
(povinný) 
Opiš čísla, která vidíš na obrázku:
Vyvojar.cz na prodej!