[ Príspevkov: 59 ] 1, 2
AutorSpráva
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 28.08.2010 12:04 | Ako optimalizovat vykon triedy

No dobre to som teda pochopil, aj keď ja by som to preskočil, lebo netvorím prehliadač, ani programovací jazyk.
Asi ma nakoniec prinútiš to akceptovať... ;)
Ale fakt by sa to nedalo urobiť po mojom??? :rolleyes:

V skratke:
Ja chcem spraviť búdu pre psa a ty mi rozprávaš o drevárskom priemysle. Ale to sa predsa dá urobiť s pílkou a kladivom...
Fakt nezľavíš zo svojho prístupu?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 28.08.2010 13:30 | Ako optimalizovat vykon triedy

tu nejde o moj pristup, tu ide oto ze zadavatel ulohy to chce od teba riesenim pomocou tried :) keby neslo oto tak zbehlejsi koder by to urobil replacovanim pomocou regularneho vyrazu :)


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 28.08.2010 16:46 | Ako optimalizovat vykon triedy

camo píše:
No veď to(viac rozmerné pole) je medzikrok, ktorý tam je úplne navyšše a okrem toho to generovanie viacrozmerného poľa určite bude vyzerať z pohľadu prehľadnosti kódu zversky. A v druhom kroku ho zase budeš prechádzať čo je druhý nadbytočný krok.

A ked budes chciet zmenit HTML vystup ?? Tak sa budes vrtat v kode, ktory rozoznava jednotlive leveli a tam budes hladat medzi regulernymi vyrazmi este aj HTML tagy a rozne to prepisovat hore dole...

Ked mas pole, krasne ho len prechadzas a jeho hodnoty obklopujes HTML tagmi..

Schvalne, si skus zmerat, kolko milisekund rozdielu tam bude a ci ti to stoji za to..


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 28.08.2010 19:48 | Ako optimalizovat vykon triedy

No na localhoste sú rozdiely vo výkone zanedbateľné, ale čo na hostingu kde sú userov stovky? Tam to bude tiež také ružové?
Som sa v knihe dočítal, že práca s poľami a triedami nieje taká jednoduchá(pre server).


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 28.08.2010 20:57 | Ako optimalizovat vykon triedy

Camo, ty si niekde cital o inej verzi PHP pre server a inej pre desktop ?
v ktorej knihe si nieco take cital ?
ohladom skalovatelnosti, pre majitela webu je lacnejsie rozsirit vykon servera ako platit zbytocne hodiny developerom aby prekopavali a zliepali neprehladny a nemodularny soft.
kedysi som robil pre znameho z USA jeden softik v delphi, bol snim spokojny no po case sa ozval ze potrebuje nieco obdobne no pre iny HW ale ze ktomu HW uz maju aj activeX komponent. som mu povedal nech radsej zozenie viac info o HW a ze mu nakodim ten soft bez nutnosti pouzitia activx komponenty ktora ma plno funkcionalit ktore aj tak nevyuzijeme a iba zaberaju miesto v pamati. odpovedal mi "problem SW firiem na Slovensku a viacmenej v europe je vtom ze sa snazia setrit pamat, no pamat je lacnejsia ako praca programatora".

EDIT: apropo ked uz sa tu prebera vykon pri paralelnom pristupe viac uzivatelov. tu je cast tvojho kodu :
Kód:
$source=file('sourcedata.txt');


cize ak som dobre precital manual, tak prikaz file() nacita obsah suboru do pola!!! nebolo by supis, brutal rychlejsie otvorit si subor cez fopen a potom nacitavat jednotlive riadky pomocou fgets ? server by to urcite potesilo, hlavne keby to takto robilo niekolko procesov naraz a disk by sa mohol po... keby mal kazdemu davat data po jednom riadku(lepsie povedane po blokoch)


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2010 10:36 | Ako optimalizovat vykon triedy

Kód:
prikaz file() nacita obsah suboru do pola!!!

No ale ten príkaz file() je predsa optimalizovaný práve na túto záležitosť. Ak to čo čítam chápem dobre, tak je rozdiel použiť zabudovaný príkaz a písať funkciu ktorá robí to isté.

Chceš povedať, že na bežnom hostingu je možné priplatiť si za rozšírenie pamäťe?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 30.08.2010 11:03 | Ako optimalizovat vykon triedy

camo píše:
Kód:
prikaz file() nacita obsah suboru do pola!!!

No ale ten príkaz file() je predsa optimalizovaný práve na túto záležitosť. Ak to čo čítam chápem dobre, tak je rozdiel použiť zabudovaný príkaz a písať funkciu ktorá robí to isté.

netvrdim ze nieje optimalizovany, len hovorim ze tiez pouzivas pole na docasne ulozenie dat aj ked nieco take povazujes za neoptimalne. alebo to iba vtedy ak to tebe vyhovuje ?

camo píše:
Chceš povedať, že na bežnom hostingu je možné priplatiť si za rozšírenie pamäťe?
na beznom hostingu ? co je podla teba bezny hosting ? free webhosting? komercny webhosting? virtualserver hosting ? server housing ?


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2010 16:24 | Ako optimalizovat vykon triedy

Citácia:
co je podla teba bezny hosting ? free webhosting? komercny webhosting? virtualserver hosting ? server housing ?

Komerčný hosting...
O tých ďalších som zatiaľ nechyroval...

Ale sa netvár, že si nepochopil, že tu nejde o používanie polí, ale o to, ako ich používaš. Bavili sme sa o písaní funkcií a o vstavaných fukciách.
Asi som sa zle vyjadril ohľadne tých polí a nemusíš ma hneď chytať za slovíčka.
Takže keď sa na to pozrieš z pohľadu toho komerčného hostingu toho čo tu bolo popísané, tak to vidíš ako? Môžem si dovoliť sa rozťahovať?
Čo hovoríš na toto: http://georgik.sinusgear.com/tag/php/


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 30.08.2010 16:49 | Ako optimalizovat vykon triedy

camo píše:
Takže keď sa na to pozrieš z pohľadu toho komerčného hostingu toho čo tu bolo popísané, tak to vidíš ako? Môžem si dovoliť sa rozťahovať?
Čo hovoríš na toto: http://georgik.sinusgear.com/tag/php/

Prepac, ale ked uz ides robit mega-gigi super ultra aplikaciu, ktora bude mat niekolko tisic navstev za minutu, tak preco sa trepes do klasickeho komercneho zdielaneho hostingu ??? :roll:

A skusal si si uz konecne overit, kolko ta tvoja aplikacia zere ??


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2010 17:24 | Ako optimalizovat vykon triedy

Vy ste tu všetci ohromne múdri...
Len mi povedz o čom bol teda ten článok....
A či je normálne, že sa na to pýtam, keď sa dočítam takéto veci. Mne to príde normálne... Lebo proste to neviem posúdiť. Tak isto ako keď si sa ty pýtal, prečo sa ti tvoj floatovaný layout rozpadá...
Ten článok bol akože o ,,mega-gigi super ultra aplikacii,,???


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 30.08.2010 17:40 | Ako optimalizovat vykon triedy

Jezisi maria ! Ja to myslim vazne, ze si otestuj pamatovu naracnost tej tvojej aplikacie ! A zistis sam, co je dobre a co nie..


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2010 17:50 | Ako optimalizovat vykon triedy

Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá... :-)
A pokoj, pokoj čo budeš robiť, keď sa tu niekto opýta ako vycentrovať CSS menu??? ;)


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 30.08.2010 18:08 | Ako optimalizovat vykon triedy

Mali by ste tu riesit optimalizaciu kodu tvojej triedy a nezachadzat bohvie kam. Takze camo, slubil si sem hodit upraveny kod triedy, ktory je podla teba viac optimalizovany, ale zatial tu nic nie je, a rozoberate tu nepodstatne veci, ktore s tvojou ulohou nemaju nic spolocne...

Bud sa tu bude riesit to, co sa ma, alebo sa to zamkne a bude pokoj...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 30.08.2010 18:40 | Ako optimalizovat vykon triedy

stenley, toho noveho kodu sa asi nedockame. ani by som sa necudoval ked camo najprv hodi linku na stranku ktora pise ako si otestovat vyuzitie pamate http://georgik.sinusgear.com/tag/php/ a o par prispevkov neskor pise :
camo píše:
Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá...


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2010 19:20 | Ako optimalizovat vykon triedy

Prisahám, že to napíšem!!!
A to sa ti coldak podarilo. Mal som ten link totiž v záložkách, a už som nevedel, čo všetko sa tam píše....
Takže moja úloha znie optimalizovať výkon tej ohavnosti, čo som spáchal ;)

Toto môžete zmazať ak je to nežiadúce. A ospravedlňujem sa adminovi za opotrebovanie prstíkov, pri tom odstraňovaní.

Nabudúce už len kód(len to bude trochu trvať, lebo rozbieham projekt http://web.php5.sk ... :D )


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 31.08.2010 0:57 | Ako optimalizovat vykon triedy

camo píše:
Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá... :-)

Ty citas tie odkazy vobec, ktore sem davas ?
http://georgik.sinusgear.com/tag/php/

Kód:
Veď je to tak jednoduché zístiť, koľko vaša aplikácia spotrebuje pamäte:
echo memory_get_usage() . "\n";


atd..

Dalej si vies zmerat cas...

Zmerias cas na zaciatku dokumentu, potom tvojou triedou daj spracovat nieco v cykle, napriklad 100 krat za sebou a potom znova odmeraj cas a odcitaj ich..

Uvidis vysledok - rozdiel dvoch casov..

Potom nieco zmen v tej triede, napriklad file() a fopen() a zas to spusti.. Uvidis rozdiel..


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 31.08.2010 17:08 | Ako optimalizovat vykon triedy

No tak som to zlátal. Je to o niečo lepšie? :-)
Kód:
<?php
class catalog
{

var $Gsource;
var $Glevel;

public function loadSource($param)
   {
     $this->Gsource=file($param);
   }

public function renderMenu()
   {
    $this->Glevel=0;
    foreach($this->Gsource as $item)
           {
            $item=trim($item);
            $this->renderItem($item);
           }
    $item='**END**';
    $this->renderItem($item);
   }

private function renderItem($item)
   {
    $lev=strspn($item,'-');
    if($lev > $this->Glevel)
      {
       echo "\n<ul>\n\t<li>$item";
       $this->Glevel=$lev;
      }
    else if($lev == $this->Glevel)
           {
            echo "</li>\n\t<li>$item";   //  level netreba nastovat lebo ==
           }
    else if($lev < $this->Glevel)
           {
            $levCk=$lev;    // $levCk - pre potreby tohoto cyklu
            do {                                // ukoncuje otvorene urovne
                echo "</li>\n</ul>\n</li>";
                $levCk++;
               }
            while($levCk < $this->Glevel);
            if($item!='**END**') echo "\n\t<li>$item";
            $this->Glevel=$lev;
           }
   }
}
?>


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 31.08.2010 18:04 | Ako optimalizovat vykon triedy

no vidis, ze sa to da, oproti prvemu pokusu je to ovela prehladnejsie a s mensim objemom kodu, ale stale je tam co doladovat... inak, renderItem() ti zle uzatvara urovne, ak sa skoci napr. z tretej na prvu...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 31.08.2010 18:14 | Ako optimalizovat vykon triedy

No a hlavne tam pomlcky zostavaju :)


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 31.08.2010 19:14 | Ako optimalizovat vykon triedy

a naco je tam trim?
Kód:
$item=trim($item);


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 31.08.2010 19:49 | Ako optimalizovat vykon triedy

Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

Blackshadow:
Tentokrát to bol úmysel, lebo sa to tak lepšie číta a kontroluje...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 31.08.2010 21:14 | Ako optimalizovat vykon triedy

camo píše:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

toto je vysledny html kod. si si isty ze je kosher ?
Kód:
<ul>
   <li>-TV, audio, video
<ul>
   <li>--LCD televízory
<ul>
   <li>---JVC</li>
   <li>---LG</li>
</ul>
</li>
   <li>--LED televízory</li>
   <li>--Prehrávače
<ul>
   <li>---Bluray prehrávače</li>
   <li>---DVD prehrávače</li>
</ul>
</li></li>
</ul>
</li>
   <li>-Veľké spotrebiče
<ul>
   <li>--Práčky</li>
   <li>--Sušičky</li>
   <li>--Chladničky
<ul>
   <li>---voľne stojace</li>
   <li>---vstavané</li>
</ul>
</li>
   <li>--Sporáky</li>
</ul>
</li></li>
</ul>
</li>


camo píše:
Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

chcel si odstranit znak "\n" z nacitaneho obsahu?
precital si si poriadne syntax prikazu "file" ?
http://sk.php.net/manual/en/function.file.php
naco asi tak sluzi flag "FILE_IGNORE_NEW_LINES"? manual tvrdi : "Do not add newline at the end of each array element"


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 31.08.2010 22:55 | Ako optimalizovat vykon triedy

camo píše:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Zjednodusit kod a odstranit problemy so spravnym uzatvaranim urovni by si velmi jednoducho mohol vyriesit pomocou rekurzivnej metody...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 31.08.2010 23:33 | Ako optimalizovat vykon triedy

stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný :D , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...

coldak:
Ty si sa zrejme ani nenarodil, teba rodičia kúpili v obchode s počítačmi nie??? ;)

Mám doma jeden taký script na výpis adresára, kde mám rekurziu, ale na to menu som to nevedel namontovať:

Kód:
<ul>
<?php
$what=".";
adresar($what);

function adresar($what)
                {
                 $blacklistADR=array('..','.');
                 $open=opendir($what."/");
                 while($item=readdir($open))
                                    {
                                     if(is_dir($item) and in_array($item,$blacklistADR)) continue;
                                     if(is_dir($item))
                                       {
                                        echo "<li><span class=\"red\">$item /adresar/</span><ul>\n";
                                        echo adresar($what."/".$item);
                                       }
                                     else echo "<li><a href=\"".$what."/".$item."\">$item</a></li>\n";
                                    }
                  echo "</ul>";
                 }
?>
</ul>


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 31.08.2010 23:50 | Ako optimalizovat vykon triedy

camo: nemohli ma kupit, lebo ja som na nezaplatenie, ale obcas som na zaplakanie :)
aby si nepovedal, ze som nebodaj z utulku(cize pes), tak som si dal trochu namahy a par hodin som studoval PHP aby som ti mohol poslat nejaky example.
Kód:
<?php
  interface ICatalog {
     public function load($conf);
     public function render();
  }
 
  class TCatalog implements ICatalog {
     private $data=array();
     private $stack = array();
     
    static public function cast(TCatalog $object) {
        return $object;
    }
   
     private function getLevel($txt) {
        return strspn($txt,"-");
     }
     
     private function addNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->data,&$subarr);
     }

    private function addSubNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->stack[$sublevel-1],&$subarr);
     }
     
     public function load($conf){
        $level=1;
        $handle = fopen($conf, "r");
         while (!feof($handle)) {
           $line = &fgets($handle);
           $sublevel = $this->getLevel($line);
           $line = trim(ltrim($line,"-"));
           if ($level==$sublevel) {
              $this->addNode($sublevel,$line);
           }
           if ($level<$sublevel) {
              $this->addSubNode($sublevel,$line);
           }
         }
        fclose($handle);
     }
     
     protected function prn($arr,$level) {
        $cnt = &count($arr);
        $level++;
        echo str_repeat("  ", $level)."<UL>\n";
        for ($i=1;$i<$cnt;$i++) {
           echo str_repeat("   ", $level)."<LI>".$arr[$i][0]."</LI>\n";
           if (count(&$arr[$i])>1) {
              $this->prn(&$arr[$i],$level);
           }
        }
        echo str_repeat("  ", $level)."</UL>\n";
     }
     
     public function render(){
        $this->prn($this->data,0);
     }
  }
 
  $catalog = new TCatalog();
  $catalog->load("menu.txt");
  echo "<html>\n<body>\n";
  $catalog->render();
  echo "</body>\n</html>\n";
  echo memory_get_peak_usage();
?>

kedze v PHP mam asi dvojdnove skusenosti tak budem rad ak mi manici v PHP napisu co by sa dalo urobit lepsie. dik


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 01.09.2010 10:24 | Ako optimalizovat vykon triedy

camo píše:
stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný :D , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...


tu mas rekurzivnu metodu, co som napisal pred par dnami, ktora ti korektne vygeneruje cely zoznam.

Mensi popis: $content vzdy obsahuje pole poloziek jednej urovne v danej vetve (napr. TV, audio, video a Veľké spotrebiče). V cykle sa postupne cez ne prechadza a kontroluje, ci dana polozka obsahuje dalsi vnoreny zoznam. Ak ano (to je ta podmienka if), metoda zavola samu seba s tym, ze ako svoj parameter uvedie pole poloziek vnoreneho zoznamu najvyssej urovne. Jednoduche, nie? :)
Kód:
private function _genMenu($content)
{
   if(empty($content)) {
      return;   
   }
   
   echo '<ul>';
   foreach($content as $key => $value) {
      $level = $this->_getLevel($key);
         
      echo '<li>'.substr(trim($value), $level);
         
      if($this->_hasChild($key, $level)) {
         $this->_genMenu($this->_getChildren($key, $level));   
      }
         
      echo '</li>';
   }
   echo '</ul>';
}


PS: cokoladu mi posielat nemusis :)

>coldak: tvoj kod u mna vygeneruje len druhu polovicu stromu a hlasi zopar chyb s referenciami.


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 01.09.2010 11:05 | Ako optimalizovat vykon triedy

Díky moc, ten zvyšok okolo toho skúsim domyslieť sám, to hádam zvládnem.... :rolleyes:

PS: Nieje tá coldakova metóda s použitím fopen problematická?! Myslím na súperenie dvoch stránok o prístup k súboru. Tak som to nejako čítal v knihe, ale v manuály som nič také nevidel....


Naposledy upravil camo dňa 01.09.2010 11:21, celkovo upravené 1

Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 01.09.2010 11:06 | Ako optimalizovat vykon triedy

stenley sorac, este na poslednu chvilku som robil nejake pokusy a vymazal som inicializacny prvok pola takze spravne by malo byt
Kód:
class TCatalog implements ICatalog {
     private $data=array("root");
     private $stack = array();

edit: ako nastavim php aby mi hlasilo aj chyby referencii ?

edit2: uz som si to nastavil, tie warnings su otom ze cez referenciu na objekt si ho modifikujem, ale to je zamer.


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 01.09.2010 11:59 | Ako optimalizovat vykon triedy

>camo: zvysok je uz malina, najvacsi "problem" je prave to generovanie spravneho vnorenia zoznamov... kedze len citas zo suboru a nijak ho nemodifikujes, tak by nemal byt problem s pristupom k jeho obsahu...

>coldak: je to deprecated, takze by som to uz radsej nepouzival, aj ked sa to da zmenit v php.ini...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
 [ Príspevkov: 59 ] 1, 2


Ako optimalizovat vykon triedy



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ako optimalizovať pre IE6 keď ho nemám?

v Ostatné

4

628

09.09.2008 17:59

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Triedy a sub triedy

v PHP, ASP

5

594

19.04.2010 19:50

emer

V tomto fóre nie sú ďalšie neprečítané témy.

CCleaner - Optimalizovať databázu

v Ostatné programy

3

638

03.09.2011 22:42

Hanoj

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zvýšit výkon notebooku

v Operačné systémy Microsoft

1

565

31.12.2012 10:16

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Ako nastaviť HD7470M na výkon

v ATI/AMD grafické karty

1

311

13.02.2013 22:53

carl65

V tomto fóre nie sú ďalšie neprečítané témy.

ako zvýšiť výkon grafickej karty?

v nVidia grafické karty

13

1293

29.12.2013 11:33

Phanteom

V tomto fóre nie sú ďalšie neprečítané témy.

ako zvysit vykon Asus N7600GS silent???

v nVidia grafické karty

21

1998

03.06.2009 13:27

McDog

V tomto fóre nie sú ďalšie neprečítané témy.

Ako sa meria vykon grafickych kariet?

v ATI/AMD grafické karty

5

686

18.07.2009 9:09

Spirit

V tomto fóre nie sú ďalšie neprečítané témy.

AKO ZVYSIT VYKON ASUS EN8800GTS 640MB

v nVidia grafické karty

23

1159

29.11.2007 16:31

mimkork

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

GT9800 1GB rovnaky vykon ako 2x gtx275?:)

v nVidia grafické karty

1

576

17.12.2009 0:25

eXistenZ

V tomto fóre nie sú ďalšie neprečítané témy.

ako zlepsit vykon a dosah wifi siete

v Siete

2

892

11.12.2014 11:56

janopalo

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zvýšiť výkon PC aby šiel AERO

v Operačné systémy Microsoft

24

4151

17.03.2008 17:30

Romi

V tomto fóre nie sú ďalšie neprečítané témy.

Ako mozem zvatsit vykon grafickej karty Z pamete RAM

v Notebooky a netbooky

3

641

23.12.2008 20:06

Triminka

V tomto fóre nie sú ďalšie neprečítané témy.

Notebook 15,6 do 500e, skôr kvalita ako výkon

v Notebooky a netbooky

6

692

10.10.2011 12:10

jbakos

V tomto fóre nie sú ďalšie neprečítané témy.

Forko triedy

v Redakčné systémy

7

785

05.05.2009 21:04

Svolo

V tomto fóre nie sú ďalšie neprečítané témy.

Mobil strednej triedy

v Mobilné zariadenia

24

1102

15.09.2017 11:54

Nair0n



© 2005 - 2025 PCforum, edited by JanoF