eval() a zatez systemu

Zdenek Hladik hladikz na infima.cz
Sobota Duben 18 19:25:46 MEST 1998


On 17 Apr 1998 11:35:47 +0200, adelton na informatics.muni.cz (Honza
Pazdziora) wrote:

>> 
>> Mam radost ze je tu nova konference prave o Perlu.
>
>My mame taky radost ;-)
>
>> Rad bych se zeptal na vase zkusenosti s nasledujicim:
>> 
>> V jednom WWW projektu jsem pouzil docela sikovnou knihovnu
>> Text:Template.  Ta umoznuje pouzivat template, ve kterem vse, co je ve
>> slozenych zavorkach je vyraz v Perlu a misto tech zavorek se pak
>> dosadi vysledek toho vyrazu. 
>> 
>> Knihovna pro to pouziva (jak take jinak) funkci eval(). Mam trosku
>> obavy ze pro eval() musi Perl nacist do pameti prekadac, tzn. program
>> ma asi o dost vetsi naroky na zdroje systemu nez pokud by eval()
>> nepouzival. Vzhledem k tomu ze v kazdem template muze byt i nekolik
>> desitek eval() muze to byt pro zatizenejsi servery nevhodne. nebo se
>> mylim?
>
>Ja tu knihovnu nepouzivam, ale donutil jste me si ji nainstalovat
>a podivat se na manove stranky a na zdrojaky, protoze Vase obavy me
>vydesily. Nastesti tam problem neni.
>
>Takze: pokud chcete pouzit Perl, tak spoustite interpret, typicky
>/usr/bin/perl. Ten nacita zdrojovy kod skriptu (ze souboru, STDIN, -e)
>a prevadi ho do nejakeho vnitrniho kodu. Na to pouziva neco, co umi
>parsovat a delat takovehle veci, v podstate prekladac. Potom (ale
>v pripade napriklad BEGIN sekci ihned pri prekladu) tento vnitrni kod
>zacne provadet. Je to porad jeden program, ten /usr/bin/perl. On
>provadi a provadi a pak narazi na eval. Ten rika, ze se ma vzit
>napriklad retezec a provest jako perlovsky kod. Takze je zavolan
>parser, kod prelozen do vnitrniho a spusten, nebo je vracena
>(a zachycena) compile-time chyba. V kazdem pripade se na to pouziva
>stejny "prekladac", ktery Vam prelozil do vnitrniho kodu Vas skript
>i na priklad ten Text/Template.pm.
>
>Tedy, pokud uz jednou spustite interpret Perlu, tak se na eval nic
>dalsiho nenatahuje.
>

To jsem tusil, ale neni parser ci prekladac (nejsem si uplne jist zda
to dela pouze nejaky mezikod ci primo preklad - tvrdi se ze perl dela
velmi efeltivni kod - to by ukazovalo spis na prekladac do nativniho
kodu procesoru!) prave mnohem narocnejsi na pamet/vykon nez vlastni
prelozeny programek?

Aplikace bezela na NT a tam se zdalo ze to zere docela dost. No az
najdu cas zkusim jednoduchy pokus: pustim dva porgramky: jeden se
smyckou co bude neco narocneho pocitat a druhy se smyckou s nejakym
trivialnim eval(). Minimalne to asi sezere vic pameti, ale to by u WWW
aplikace nebylko tak hrozne pokud to v pameti zustane jen jednou...


                                               Zdenek Hladik
                                            I N F I M A - W A N
                           /""""""\      Internet,LAN,WAN consulting
                         ( (o)  (o) )   Zazvorkova 2008 Praha 5,Czech
                             (..)           tel/fax +4202-5612731
                             ----       Internet: hladikz na infima.cz
                            \____/  --,      BBS 3122741(30 lines)
                                     / ,  ,     BBS.INFIMA.CZ
                                    `--+--|    FTP,WWW,TELNET
                                       '  '    


Další informace o konferenci Perl