Archívum - Jún 26, 2020
Lua - egy nagy csalódás
Pár éve neki akartam állni egy saját monitoring program írásának.
Nem lett belőle semmi, de emiatt összetákoltam egy teszt programot, amivel meg tudtam mérni, hogy adott tevékenységet (esetemben a /proc alatti állományok olvasását) melyik nyelv, milyen sebességgel képes végezni.
Valaki kisegített egy Lua nyelven írt teszttel és rendesen megdöbbentett: nagyjából a C programmal azonos időt produkált, messze lekörözve minden mást.
A napokban előszedtem megint a logokban turkálós mániámat és az eredetileg bash+perl+linux tool alapokra épülő egyik programot átírtam tiszta python-ra. Meglepő módon a python a gyorsabb. (3-as, ami egyébként jóval lassúbb bizonyos feladatoknál a 2-esnél)
Na itt jött a nagy ötlet: ha a python ilyen gyors, nézzük, mit tud a Lua?
A feladat perlben ennyi:Sajnos(?) a Lua nem rendelkezik regex feldolgozási képességgel ismereteim szerint és az interpretere sem tud annyit, mint a perl, így ez lett belőle:Ugyanazon az inputon+gépen a perl 12s körül fut le, a lua 35-38s... :(
Hát nagyot csalódtam. :)
Ui: a weblaborban is... a topic nyitásakor megnyitott előnézetből már nem tudom menteni a témát, mert valami captcha problémáról makog a szerver...
■ Nem lett belőle semmi, de emiatt összetákoltam egy teszt programot, amivel meg tudtam mérni, hogy adott tevékenységet (esetemben a /proc alatti állományok olvasását) melyik nyelv, milyen sebességgel képes végezni.
Valaki kisegített egy Lua nyelven írt teszttel és rendesen megdöbbentett: nagyjából a C programmal azonos időt produkált, messze lekörözve minden mást.
A napokban előszedtem megint a logokban turkálós mániámat és az eredetileg bash+perl+linux tool alapokra épülő egyik programot átírtam tiszta python-ra. Meglepő módon a python a gyorsabb. (3-as, ami egyébként jóval lassúbb bizonyos feladatoknál a 2-esnél)
Na itt jött a nagy ötlet: ha a python ilyen gyors, nézzük, mit tud a Lua?
A feladat perlben ennyi:
perl -nle '/^(... .. ..):.*DROP.*DST=(\S+)/ && do { print $1,"\t",$2 }'
lua5.3 -e 'l=io.read("*l"); while l do m=string.match(l,"^(... .. ..):..:.. .* DROP .*DST=(%S*)"); if m then print(m) end; l=io.read("*l"); end'
Hát nagyot csalódtam. :)
Ui: a weblaborban is... a topic nyitásakor megnyitott előnézetből már nem tudom menteni a témát, mert valami captcha problémáról makog a szerver...