From: Trap (Trapasak@volny.cz)
Date: 02. 05. 2003, 21:42 CEST
On Wed, 30 Apr 2003 17:56:25 +0200 (CEST) Ivanek <zlutypes@seznam.cz> wrote: > > hmm, nechci byt rypavy, ale kde je ta efektivita? > > jaky je rozdil mezi tim, ze nactu cely soubor najednou a > > jeho postupnym ctenim po radcich? nejak mi to prijde > > stejne, vzdy musi precist cely soubor. a efektivnejsi > > bude to nacist najednou (spise rychlejsi nez > > efektivnejsi) efektivni bude jedine to, ze v souboru > > menu bude primo to menu a nic jineho. > > - h! - > > Rozdil je predevsim ve zbytecnem nacitani CELEHO souboru > do pameti protoze predem nevim, kolik z neho budu realne > potrebovat. PRECIST ho tedy musi ale NACIST ne. Nedavno > jsem tady obhajoval nacteni celeho, _predem znameho a > kratkeho_ souboru, a hned kdekdo jecel, ze je to > neefektivni, prestoze v onom pripade to bylo plne > opodstatnene. Tady potrebuju z toho fajlu jen kousek nebo > kousky, takze je ted zase vyhodnejsi ho nacitat po radcich > a schovavat jenom ty potrebne. > > Krome toho ty jsi navrhl regex s/// se substituci podle > nalezene podskupiny, ktery mel pracovat na stringu s CELYM > souborem. Tak prave tohle je podle meho nazoru vrchol > neefektivity... > > I ja mam v oblibe komplexni 'jednoradkova' reseni, pokud > ale nejsou v jasnem rozporu s pozadavkem rychlosi a naroku > (predevsim pametovych) na server. > > Ivanek. > No nabizi se jeste jedno resenim, asi o 20% rychlejsi nez Ivankovo, na mene radku, bez zasahu do puvodnich souboru a s opovrhovanym stristr. Tise predpokladam, ze <body ...> a </body> je na samostatnem radku: function myinclude2($what) { $fp = fopen($what,"r"); while( ($line = fgets($fp, 4000)) && !stristr($line,"<body") ) ; while( ($line = fgets($fp, 4000)) && !stristr($line, "</body>")) echo "$line"; fclose($fp); } s pouzitim myinclude2("nazev_souboru"); Abych pravdu rekl, rychlost pristupu h!ynka.lipy se mne nepodarilo otestovat z pomerne nepekneho duvodu. Nejak mi to nefungovalo a navic to pekne zamestnalo cpu (nez vyprsel 30s limit na execute). Nejspis nejaky preklep v regex, nebo mne tu spatne funguje copy|paste. Testy jsem delal pomoci tisicinasobneho foru a wgetem. Velikost vysledneho souboru se vysplhala asi na 12 MB. Pri pouziti preg_match doslo asi k jednoprocentnimu zpomaleni, naopak pri pouziti strstr se beh samozrejme o 6% zrychlil. -- S pozdravem Trap
This archive was generated by hypermail 2.1.6 : 02. 05. 2003, 21:43 CEST