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.