Rychlost spuštění aplikace

Ostatní Rychlost spuštění aplikace

Potřeboval jsem opakovaně spouštět nějakou jednoduchou funkci a bylo mi vcelku jedno, v jakém jazyku bude napsána. Tak mě napadlo, že změřím, jak dlouho trvá spuštění procesu v různých jazycích.

Měřil jsem několikrát, vždy druhý nejlepší čas, abych vyloučil vliv načítání z HDD. Programy byly velmi krátké, klasický "Hello, world". Měřil jsem tedy ve skutečnosti jen dobu načtení běhového prostředí aplikace.

Jazyk Čas
C 2 ms
CLisp 42 ms
Rep 37 ms
PHP5 91 ms
Java 326 ms
Bash 8 ms
Lua 5 ms
Python 55 ms
Perl 8 ms
AWK 4 ms
xsltproc 6 ms
Saxon 1105 ms

Jak se dalo předpokládat, zvítězil jazyk C téměř neměřitelným časem. Nemá žádné běhové prostředí, není v něm co nastavovat. V závěsu Lua a kupodivu Bash. Proč? Základní části těchto interpretrů jsou velmi krátké. Další byly interpretry Lispu a Pythonu, o kus dál PHP.

A poslední? Z běžně používaných jazyků to byla opěvovaná a současně proklínaná Java. V tomto testu úplně propadla, i když v jiných testech dokáže být rychlejší, než program napsaný v C. Zde se jasně prokázalo, že na drobné utility se prostě nehodí, že její doménou jsou velké aplikace.

Dodatečně jsem si vzpomněl ještě na Perl. Svým výsledkem 8 ms se řadí ke špičce mezi interpretovanými jazyky, alespoň v případě krátkých utilit. Bohužel se na velké aplikace moc nehodí.

Jen z legrace jsem otestoval AWK, protože se jedná o jazyk určený spíše pro speciální účely a má poměrně neobvyklou syntaxi. Se svým spouštěcím časem 4 ms se však téměř vyrovnal programu napsanému v C, ale vývoj drobné aplikace je v něm nesrovnatelně kratší.

Velmi překvapil xsltproc. O XSLT bylo napsáno mnoho polopravd a mýtů ohledně rychlosti. Výsledek 6 ms předčil očekávávání. Konkrétně xsltproc byl napsán v jazyku C tak, aby byl co nejrychlejší. Protipólem byl Saxon, který stejnou aplikaci spouštěl mnohem déle.

Cokoli pod 10 ms se dá považovat za vynikající výsledek, bohužel je to však současně hranice přesnosti použitého měření. K rozhodování o tom, který jazyk si vybrat, by se měly brát v úvahu spíš ostatní vlastnosti.


 

  Aktivity (1)

Článek pro vás napsal Kit
Avatar
Jsem spokojeným uživatelem operačních systémů založených na linuxovém jádře. Zejména openSUSE a Ubuntu. Pro psaní veškerých textů a programů používám vynikající textový editor Vim. Aplikace se snažím psát vždy v tom nejvhodnějším programovacím jazyk...

Jak se ti líbí článek?
Celkem (6 hlasů) :
4.666674.666674.666674.666674.66667


 



 

 

Komentáře
Zobrazit starší komentáře (3)

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Bylo by fajn přidat k článku i grafy, takový ten wordovský, sloupcový. Když tak rád měříš, viděl jsi:

http://www.itnetwork.cz/index.php?…
a
http://www.itnetwork.cz/index.php?…
?

Odpovědět 14.6.2012 21:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Grafy se mi na takovou prkotinu moc dělat nechtějí a už vůbec ne wordovské ;) Vím, že čísla toho moc neřeknou, ale byl to jen okamžitý nápad na porovnání rychlosti spouštění virtuálních strojů.

Jazyk C například do toho vůbec nepatří, byl tam přidán jen za účelem porovnání s kompilovaným jazykem.

Na různých procesorech a na různých OS jsou výsledky různé. V tabulce jsou samozřejmě výsledky pouze z jednoho PC a jednoho OS.

Nápad vznikl poté, co mi spouštění některých interpretrů připadlo zdlouhavé. Konkrétně Octave a Racket, které v testu ani nejsou a které měly přes 1 sekundu.

Odpovědět 15.6.2012 7:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Měl jsem na mysli excelovské. Myslím, že jsou docela dobré :)

Odpovědět 15.6.2012 9:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:

A co C#

Odpovědět 4.5.2013 12:06
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na KlimiCZ
Kit:

C# jsem neměl na čem vyzkoušet. Nepoužívám ho.

Odpovědět 6.5.2013 8:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
KlimiCZ
Člen
Avatar
Odpovědět  -1 6.5.2013 8:46
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na KlimiCZ
Kit:

Mohl jsem použít Mono, ale přípona souboru .exe je pro mne natolik odpudivá, že se tomuto jazyku vyhýbám. Tenkrát jsem ani neměl nainstalován jeho kompilátor.

Odpovědět  -1 6.5.2013 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
nahodny kolemjdouci
Neregistrovaný
Avatar
nahodny kolemjdouci:

Nezaradit do srovnani C# resp. mono a tvrdit, ze by to nebylo objektivni je trochu "prapodivne". Asi tak jako tvrdit, ze Java propadla. Java ma taky sve implementace vm a jejich start se bude lisit. Rovnez delat zavery o PHP. To si taky nacita extenze, tzn. moje a tvoje instalace PHP bude jinak rychla. Coz zrejme asi plati i o ostatnich jazycich. Chtelo by to trochu rozvest nejake zakladni podminky/pred­poklady. Nebo alespon pro "minimalni" program zkusit "minimalni" instalaci/kon­figuraci platformy - proste zkusit to vyladit jak nejlepe to pro tento konkretni ucel jde.

 
Odpovědět 6.6.2013 21:12
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na nahodny kolemjdouci
David Čápka:

Kit zde jasně vysvětluje, že Java může být rychlejší než C a i za jakých podmínek. Nevidím smysl ve vyčerpávajícím výpisu php_info() nebo něčeho podobného, časy jsou orientační a tolik se měnit nebudou.

Odpovědět 6.6.2013 21:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na nahodny kolemjdouci
Kit:

Co jsi nepochopil na větě Měřil jsem tedy ve skutečnosti jen dobu načtení běhového prostředí aplikace ?

Mono jsem neměl nainstalováno, proto jsem ho neměřil. Navíc se mi jevilo nekorektní hodnotit výsledky C# podle Mono, protože i když mají stejný výsledný formát (exe), jsou to přece jen rozdílné aplikace.

Programy napsané v C# mi zpravidla nejedou vůbec, takže to už ani nezkouším.

Odpovědět 7.6.2013 9:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 13. Zobrazit vše