Rýchlosť spustení aplikácie
Potreboval som opakovane spúšťať nejakú jednoduchú funkciu a bolo mi vcelku jedno, v akom jazyku bude napísaná. Tak ma napadlo, že zmeriam, ako dlho trvá spustenie procesu v rôznych jazykoch.
Meral som niekoľkokrát, vždy druhý najlepší čas, aby som vylúčil vplyv načítanie z HDD. Programy boli veľmi krátke, klasický "Hello, world". Meral som teda v skutočnosti len dobu načítanie runtime prostredie aplikácie.
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 |
A posledná? Z bežne používaných jazykov to bola ospevovaná a súčasne preklínaná Java. V tomto teste úplne prepadla, aj keď v iných testoch dokáže byť rýchlejší, než program napísaný v C. Tu sa jasne preukázalo, že na drobné utility sa jednoducho nehodí, že jej doménou sú veľké aplikácie.
Dodatočne som si spomenul ešte na Perl. Svojim výsledkom 8 ms sa radí k špičke medzi interpretovanými jazykmi, aspoň v prípade krátkych utilít. Bohužiaľ sa na veľké aplikácie veľmi nehodí.
Len z legrace som otestoval AWK, pretože sa jedná o jazyk určený skôr pre špeciálne účely a má pomerne neobvyklú syntax. So svojím spúšťacím časom 4 ms sa však takmer vyrovnal programu napísanému v C, ale vývoj drobné aplikácia je v ňom neporovnateľne kratšie.
Veľmi prekvapil xsltproc. O XSLT bolo napísané mnoho poloprávd a mýtov ohľadom rýchlosti. Výsledok 6 ms predčil očekávávání. Konkrétne xsltproc bol napísaný v jazyku C tak, aby bol čo najrýchlejší. Protipólom bol Saxon, ktorý rovnakú aplikáciu spúšťal oveľa dlhšie.
Čokoľvek pod 10 ms sa dá považovať za vynikajúci výsledok, bohužiaľ je to však súčasne hranica presnosti použitého merania. Na rozhodovanie o tom, ktorý jazyk si vybrať, by sa mali brať do úvahy skôr ostatné vlastnosti.