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

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

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
NapísalOffline : 25.08.2010 15:16 | Ako optimalizovat vykon triedy

Mám takéto zadanie:
Citácia:
2.)
v tejto časti, je Vašou úlohou optimalizovať výkon triedy Catalog,
navrhnite a implementujte podľa Vás najefektívnejší spôsob optimalizácie
popíšte v skratke čo je cieľom optimalizácie, a prečo ste sa rozhodli pre Vaše riešenie


Trieda Catalog je hotová, ale nechápem, čo a myslí pod tou optimalizáciou. Nevie niekto čo asi odo mňa chcú???
Týka sa to rýchlosti, alebo mám pridať nejaké funkcie??
Totiž skúsim kontaktovať aj zadávateľa, ale je už po pracovnej dobe a do zajtra to má byť hotové, tak neviem...


Offline

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

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 25.08.2010 15:35 | Ako optimalizovat vykon triedy

predpokladam, ze si za to plateny, takze by si mal vediet, co od teba chcu... nabuduce to pojde rovno do kosa!


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

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

Nie som, týka sa to výberového procesu a toto je všetko čo som k tomu dostal.


Offline

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

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 25.08.2010 15:42 | Ako optimalizovat vykon triedy

my ti mame poradit a ty to potom odovzdas ako vlastne riesenie? trosku blbe nie? neber to pls osobne, ale ked nevies, co je to optimalizacia a ako ju aplikovat, tak sa zbytocne namahas...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

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

No dobre, tak sa teda zbytočne namáham a teda mi aspoň poraď, kde sa o tom niečo dozviem, aby som sa nenamáhal zbytočne nabudúce.

EDIT:
Tak som našiel toto: http://interval.cz/clanky/usetrete-az-8 ... o-prenosu/
Ale mám s tým jeden problém. Nemôžem použiť ob_start("ob_gzhandler")
Vypisuje mi to, že používam nepovolené kódovanie. Pritom by tá funkcia mala zabepečovať práve to, aby to browser dokázal rozbaliť.
Tak zatiaľ som to dal bez toho gzipu.
Bude to mať nejaký význam z hľadiska optimalizácie??

PS: Myslím si, že moje úsilie je adekvátne a o žiadne hotové riešenia tu nikoho nežiadam... resp. každú otázku na tomto fóre je možné chápať ako snahu o zneužitie cudzích vedomostí...

EDIT2

Há tak som zistil, že to vplyv mať nebude. Je mi to na prd. ako som zistil ob_gzhandler mi nefungoval, preto, že mi server gzipuje automaticky a ja som to gzipoval dva krát, čo bolo aj pre FF priveľa.
Len nechápem zmysel tejto komunikácie... :?
Kde by som sa len dozvedel niečo o optimalizovaní, keď už ani google, ani kniha a ani na fóre mi nikto nič nepovie...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.05.10
Prihlásený: 11.04.12
Príspevky: 12
Témy: 5 | 5
NapísalOffline : 26.08.2010 19:40 | Ako optimalizovat vykon triedy

to Stenley:
si sice moderator, ale otazka to bola v pohode.
forum je o pomahani, ak vies porad, ak nie zbytocne nespamuj.

a k tejto tvojej vete:
stenley píše:
my ti mame poradit a ty to potom odovzdas ako vlastne riesenie? trosku blbe nie? neber to pls osobne, ale ked nevies, co je to optimalizacia a ako ju aplikovat, tak sa zbytocne namahas...


o tom su rady, clovek sa uci kazdym dnom a ked nieco neviem cita a pyta sa urobi si vlastny zaver a spravi potom vlastne riesenie. je to standardne a vsade.

je tu x ludi co robi projekty, webaplikacie alebo v praci ma robotu a nevie si poradit a tu sa spyta (a v praci je za to plateny)

camo nvm ci si na nieco prisiel, ale uz mas po funuse, tak snad si to zmakol.
GL (good luck)

//mne ucel fora vysvetlovat nemusis, som tu dost dlho na to, aby som to vedel... takisto o spamovani by som na tvojom mieste radsej pomlcal... moja reakcia bola preto taka, lebo ma zarazilo, ze sa hlasi do nejakeho vyberoveho konania, a pritom nema ponatia o zakladnych veciach... je tu jedno pravidla, ktore sa tyka vypracovavania domacich uloh a toto ma velmi podobny charakter... (stenley)


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 : 26.08.2010 20:25 | Ako optimalizovat vykon triedy

mozno by pomohlo keby Camo najprv napisal co je trieda Catalog , naco sluzi, ako pracuje ...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.05.10
Prihlásený: 11.04.12
Príspevky: 12
Témy: 5 | 5
NapísalOffline : 26.08.2010 22:35 | Ako optimalizovat vykon triedy

to ano :)


Offline

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

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

Stenley:
A čo mi uniklo ohľadom tej mojej dilemy, že vlastne každá otázka na tomto fóre je potenciálne zneužitie cudzích vedomostí. To že pravidlá tu sú neznamená, že nie sú zlé. A ako som napísal, ja tu od nikoho nežiadam hotové riešenia...

//dolezita je forma, akou otazku podas - ak toto budes ovladat, nebudes mat problem (stenley)

To all:
Keďže už to nespadá pod zákony tohoto fóra, dám vám sem to zadanie, ak sa na to bude chcieť niekomu pozrieť:

Takže mám txt súbor:
Kód:
-TV, audio, video
--LCD televízory
---JVC
---LG
---Panasonic
---Philips
---Samsung
---Sony
--LED televízory
--Plazmové televízory
--Satelitná technika
--Domáce kiná
--Hifi systémy
--Prehrávače
---Blu-ray prehrávače
---DVD prehrávače
---DVD prenosné prehrávače
-Veľké spotrebiče
--Práčky
--Sušičky
--Chladničky
---voľne stojace
---vstavané
---prenosné
--Sporáky
-Malé spotrebiče
--Vysávače
---podlahové
---stojanové
---parné
---ručné
--Žehličky
--Fritézy
--Rýchlovarné kanvice

K tomu som mal urobit triedu, ktorá z toho spraví klikatelné menu s dorazom na tzv. hygienu kódu, preto tam bude kopa bielych znakov.
Tvar URL si nevšímajte to bola požiadavka, alebo som ja niečo nepochopil.
Vyrobil som toto(dufam že sa to bude dať u vás čítať s tými komentármi):
Kód:
<?php
class Catalog
{
public function render()
{
$source=file('sourcedata.txt');
$priznakLevel=0;                  //  urcuje uroven polozky v strukture menu
$anchor='';                       //  format atr. href v tagu <a>
echo "<ul>\n";
foreach($source as $item)
       {
        $item=trim($item);                   //  zdroj obsahuje zalomenia riadkov \n ktore treba odstranit
        if(preg_match("/^-(?!-)/",$item))                   //  zistuje sa ci sa jedna o polozku prvej urovne
          {
             if($priznakLevel==2) echo "\t</ul></li>\n";                        // ak je pred polozkou jeden vnoreny zoznam <ul> z predoslej polozky treba ho ukoncit
           if($priznakLevel==3) echo "\t\t</ul></li>\n\t</ul></li>\n";          // ak su pred polozkou dva vnorene zozonamy <ul> treba ich ukoncit
           $cleanItem=str_replace('-','',$item);                                //  odstranenie znaku -
           $anchor="/".$cleanItem;                                              //  vytvorenie atr. href pre taf <a>
           echo "<li><a href=\"$anchor\">$cleanItem</a>\n";
           $priznakLevel=1;                                                     //  oznacenie urovne pre potrebu dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov
           continue;                                                            //  odpada kontrola nasledujucich podmienok
          }
         if(preg_match("/^--(?!-)/",$item))                  //  zistuje sa ci sa jedna o polozku druhej urovne
          {
             if($priznakLevel==1) echo "\t<ul>\n";                 //  ak sa jedna o zaciatok vnoreneho zoznamu tj. este nebola nastavene prem. $priznakLev=2 prechadzame z urovne 1 na 2
           if($priznakLevel==3) echo "\t\t</ul></li>\n";
           $cleanItem=str_replace('--','',$item);
           $anchorLev2=$anchor."/".$cleanItem;                          //  $anchorLev2 je pouzita preto, aby sa neprepisala premenna $anchor z ktorej vychadzame pri polozkach 2. urovne
             echo "\t<li><a href=\"$anchorLev2\">$cleanItem</a>\n";
           $priznakLevel=2;                                             //  pre potreby dlasie cyklu v suvislosti s ukoncovanim vnorenych zoznamov
           continue;
          }
        if(preg_match("/^---(?!-)/",$item))                  //  zistuje ci sa jedna o polozku 3. urovne
          {
             if($priznakLevel==2) echo "\t\t<ul>\n";                //  ak sa jenda o zaciatok  vnoreneho zoznamu prechod z urovne 2 na 3
           $cleanItem=str_replace('---','',$item);
             $anchorLev3=$anchorLev2."/".$cleanItem;
           echo "\t\t<li><a href=\"$anchorLev3\">$cleanItem</a></li>\n";
           $priznakLevel=3;
          }
       }
if($priznakLevel==1) echo "</ul>\n";                                    //  ukoncovanie podla aktualnej urovne
if($priznakLevel==2) echo "\t</ul></li>\n</ul>\n";                      //  - " -
if($priznakLevel==3) echo "\t\t</ul></li>\n</ul></li>\n</ul>\n";        //  - " -
}
}
?>

No a oni v druhej úlohe chceli, aby som zvýšil výkon triedy.
Dali k tomu takú indíciu, ako že aby som implementoval rozhranie(to už bolo nad môj pochop):
Kód:
<?php

interface ICatalog {
                               
    /**
     * Loads config data.
     * @param  string path to config file
     */
    public function load($cfg);

    /**
     * Renders html menu.
     */
    public function render();

}

?>

Vie mi niekto povedať, čo tým mysleli??


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30
NapísalOffline : 26.08.2010 23:33 | Ako optimalizovat vykon triedy

si si istý, že tým mysleli "zvýšiť výkon implementovaním rozhrania"? neviem o tom, že by pri použití interface-u došlo k nárastu výkonu :lol: optimalizácia nemusí vždy znamenať len "zvýšenie rýchlosti" ;) interface je len akoby "šablóna" triedy

inak ešte k tomu kódu - toto je CELÁ trieda?


_________________
C#, PHP, ...
Offline

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

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

Citácia:
si si istý, že tým mysleli "zvýšiť výkon implementovaním rozhrania"?

Asi si nepochopil...
Ja som si práve nebol istý. Ja som sa tu pýtal či neviete, čo tým mysleli, nie že SI JA NIEČO MYSLÍM! Podľa môjho skromného názoru(na rozdiel od toho tvojho)by sa na také veci nemusela používať trieda. Takže tvoje úškrny mi akurát tak lezú na nervy... NAČO REAGUJEŠ?!?! Aby si ukázal aký si ty múdry? To moc múdre neni a ak to bude pokračovať tak ten ban zariskujem a vysvetlím to podrobnejšie...


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30
NapísalOffline : 27.08.2010 0:01 | Ako optimalizovat vykon triedy

reagoval som na toto:
Citácia:
No a oni v druhej úlohe chceli, aby som zvýšil výkon triedy.
Dali k tomu takú indíciu, ako že aby som implementoval rozhranie

z tohto mi vyplýva, že buď ti to takto povedali alebo si to tak pochopil ty. Zaujímalo ma, či ti to už priblížili (interface si v prvom príspevku nespomínal). Nemám v úmysle sa hádať a ak si to tak z môjho príspevku pochopil, tak sa ti ospravedlňujem. Narozdiel od iných nemám problém diskutovať...

to, či na toto treba alebo netreba používať triedu... v tomto s tebou súhlasím, na rozparsovanie jedného txt súboru v php je to asi zbytočné. Pokiaľ je tebou uvedený príklad celé znenie triedy tak je to samozrejme oničom a rýchlejšie by bolo v porovnaní s tým urobiť len obyčajnú funkciu.

+ reagujem preto, aby som vyjadril svoj názor a prípadne aj pomohol. Ak to nie je vítané, stačí povedať, nabudúce keď uvidím že si založil tému ty, nechám to tak. Nepotrebujem sa tu s nikým doťahovať.


_________________
C#, PHP, ...
Offline

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

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 27.08.2010 8:07 | Ako optimalizovat vykon triedy

ako tak pozeram na metodu render(), tak by bolo najlepsie, keby si ju prerobil a spravil poriadne, lebo toto mi ako citatelny kod, navyse s dorazom na prehladnost a univerzalnost, nepripada... napr. co spravi tvoj kod, ked pribudne dalsia uroven v menu? ;) treba obcas rozmyslat aj algoritmicky, a nie sa bezhlavo hnat do programovania za kazdu cenu, vysledkom coho je vacsinou jeden velky bordel, podobne ako v tvojom pripade...

naznacili ti, ake metody mas zhruba pouzit, ale ty nie, ty to strcis do jednej, aby sa pre isotu nedala pouzit na iny subor, v ktorom moze byt ulozena ina struktura menu - aj o tom je optimalizacia, univerzalnost, znovupouzitelnost, ktore tvojmu kodu nie len ze chybaju, ale ty si ich tam naschval nezahrnul...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 : 27.08.2010 8:30 | Ako optimalizovat vykon triedy

no tiez sa priklanam k stenley-mu , ten kod je dost neprehladny a neuniverzalny. tiez interface definuje dalsiu povinnu metodu "load($cfg)" ktoru nemas vo svojom kode. tvoja trieda by mala byt implementaciou predpisaneho interface. samozrejme ja osobne by som do triedy zapracoval dalsie privatne metody ktore by riesili ciastkove ulohy. napr :
Kód:
class Catalog implements ICatalog {
   

    public function load($cfg) {
    ... tu by som riesil nacitanie suboru s definiciou menu
    }

    public function render() {
    ... tu by som riesil vyskladavanie html codu
    }

    private function gelLevel($riadok) {
      return strcspn($riadok,"-"); -- vrati pocet znakov "-" cize urci level
    }
...

}


toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !


Offline

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

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

Takto vy kritici:
Toto čo tu je, je úloha číslo jedna. Tam nič viac mať nechceli.
Úloha dva bola optimalizovať a tam som samozrejme pridal voliteľný parameter ktorý umožní Stenleymu aj Coldakovi načítať iný súbor.

Inak mi prosím vás skúste niekto vysvetliť, že čo je na tej funkcii neprehľadné???

No a pekne sa z toho vyvliekol coldak: ,,toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !,,

Priznávam, ak funkcia strcspn() robí to čo myslím, tak to je lepšie riešenie.
Ale skôr to ma asi byť strspn()...
No ale neviem pochopiť načo je tam funkcia load()(podľa coldaka) dobrá. Načo je tam proste definícia tejto metódy, ktorá urobí to, čo musí urobiť vždy, teda podľa mňa by mala byť súčasťou metódy render().

Predpokladám že getLevel() je volaná z metódy render(). Tak?? Však ako inak, keď je privat.

Aby vaše zhrozenie bolo dokonalé, tak vám ukážem ako som úlohu2 poňal ja:
Kód:
<?php
/*
**
Priznavam, ze vasu myslienku implementacie rozhrania som nepochopil.
Navrhol som vlastne zdokonalenie triedy Catalog:
V povodnej triede Catalog bola vymenena funkcia preg_match za retazcovu funkciu strpos
Kontrola 3. urovne bola presunuta na zaciatok pretoze funkcia strpos by nerozoznala pocet "-" v retazci a aj 3.uroven by pokladla za prvu prip. druhu uroven
Kod by mal byt rychlejsi, ale stratil na prehladnosti
Pridany volitelny parameter $source metode Arender
**
*/
class ACatalog
{
public function Arender($source)
{
$source=file($source);
$priznakLevel=0;                  //  urcuje uroven polozky v strukture menu
$anchor='';                       //  format atr. href v tagu <a>
echo "<ul>\n";
foreach($source as $item)
       {
        $item=trim($item);                    //  zdroj obsahuje zalomenia riadkov \n ktore treba odstranit
        if(strpos($item,'---')===0)                  //  zistuje ci sa jedna o polozku 3. urovne  (0==false preto ===)
          {
             if($priznakLevel==2) echo "\t\t<ul>\n";                //  ak sa jenda o zaciatok  vnoreneho zoznamu tj. prechod z urovne 2 na 3
           $cleanItem=str_replace('---','',$item);
             $anchorLev3=$anchorLev2."/".$cleanItem;
           echo "\t\t<li><a href=\"$anchorLev3\">$cleanItem</a></li>\n";
           $priznakLevel=3;                                                        //  pre potreby dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov
           continue;                         // odpada kontrola ostatnych podmienok
          }
        if(strpos($item,'--')===0)                  //  zistuje sa ci sa jedna o polozku druhej urovne
          {
             if($priznakLevel==1) echo "\t<ul>\n";                 //  ak sa jedna o zaciatok vnoreneho zoznamu tj. este nebola nastavene prem. $priznakLev=2 tj. prechadzame z urovne 1 na 2
           if($priznakLevel==3) echo "\t\t</ul></li>\n";           //  prechadzame z urovne 3. na 2.
           $cleanItem=str_replace('--','',$item);
           $anchorLev2=$anchor."/".$cleanItem;                          //  $anchorLev2 je pouzita preto, aby sa neprepisala premenna $anchor z ktorej vychadzame pri polozkach 2. urovne
             echo "\t<li><a href=\"$anchorLev2\">$cleanItem</a>\n";
           $priznakLevel=2;
           continue;
          }
        if(strpos($item,'-')===0)                   //  zistuje sa ci sa jedna o polozku prvej urovne
          {
             if($priznakLevel==2) echo "\t</ul></li>\n";                        // ak je pred polozkou jeden vnoreny zoznam <ul> z predoslej polozky treba ho ukoncit
           if($priznakLevel==3) echo "\t\t</ul></li>\n\t</ul></li>\n";          // ak su pred polozkou dva vnorene zozonamy <ul> treba ich ukoncit
           $cleanItem=str_replace('-','',$item);                                //  odstranenie znaku -
           $anchor="/".$cleanItem;                                              //  vytvorenie atr. href pre taf <a>
           echo "<li><a href=\"$anchor\">$cleanItem</a>\n";
           $priznakLevel=1;                                                     //  oznacenie urovne pre potrebu dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov
          }


       }
if($priznakLevel==1) echo "</ul>\n";                                    //  ukoncovanie podla aktualnej urovne
if($priznakLevel==2) echo "\t</ul></li>\n</ul>\n";                      //  - " -
if($priznakLevel==3) echo "\t\t</ul></li>\n</ul></li>\n</ul>\n";        //  - " -
}
}
?>


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 : 27.08.2010 12:20 | Ako optimalizovat vykon triedy

camo píše:
No a pekne sa z toho vyvliekol coldak: ,,toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !,,

Coldak: ta veta znamena len tolko ze ak som urobil niekde nejaku sytnaxovu chybu tak aby sa do mna niekto nenavazal. priklad by mal byt spravny podla manualov PHP, ale chyba sa mohla vystkytnu. islo len o naznacenie ako by si mal spravne pouzivat OOP.

No ale neviem pochopiť načo je tam funkcia load()(podľa coldaka) dobrá. Načo je tam proste definícia tejto metódy, ktorá urobí to, čo musí urobiť vždy, teda podľa mňa by mala byť súčasťou metódy render().

Coldak: funkcia load($cfg) ma zabezpecit nacitanie dat do nejakej tvojej internej struktury ktora este nebude priamo HTML. preco ? no lebo nikde v zadani som nevidel ze menu musi byt iba pomocou UL,LI. ak by potrebovali generovanie pomocou JS, tak si iba odvodia novu triedu od tvojej a overidnu tvoju funkciu render() svojou v ktorej to urobia po novom no nebudu musiet zase riesit loadovanie a parsovanie suboru nakolko tu funkcionalitu zdedia od tvojej povodnej triedy. Skus sa trochu povenovat OOP.

Predpokladám že getLevel() je volaná z metódy render(). Tak?? Však ako inak, keď je privat.

Coldak: ano, ale moze byt volana aj z load() alebo inej internej funkcie, ale treba davat pozor na staticke funkcie a premenne




Offline

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

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

Walter:
V pohode, nabudúce menej toho výsmechu a nič podobné sa neudeje... a môžeme diskutovať.
Ja som to zadanie dostal cez email a nebolo tam skoro nič, len to čo som už opísal + ten ich základ toho interface...

Coldak:
Ja som toho názoru, že www stránky sa majú optimalizovat na rýchlosť a teda, čím viac funkcii a čím viac parsovania a vyhodnocovania, tým horšie. Preto asi OOP má v PHP svojich odporcov, nie???
No a to s tým JS to už bolo proti všetkým pravidlám prístupnosti. Čo chudáci surfery na mobilných telefónoch a paranoici?
Veď za toto by ma v sekcii HTML ukameňovali. Tak ako to teda mám chápať??? :loony:
Ja proste akosi OOP a www stránky nejako neviem spojiť dokopi. Ešte keď má firma svoj server len pre seba, ale nie ak sa delím o priestor s niekoľkými tisícami daľších domén... Či ako???

//edituj si prispevky! (stenley)


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 : 27.08.2010 12:53 | Ako optimalizovat vykon triedy

camo píše:
Coldak:
Ja som toho názoru, že www stránky sa majú optimalizovat na rýchlosť a teda, čím viac funkcii a čím viac parsovania a vyhodnocovania, tým horšie. Preto asi OOP má v PHP svojich odporcov, nie???
No a to s tým JS to už bolo proti všetkým pravidlám prístupnosti. Čo chudáci surfery na mobilných telefónoch a paranoici?
Veď za toto by ma v sekcii HTML ukameňovali. Tak ako to teda mám chápať??? :loony:
Ja proste akosi OOP a www stránky nejako neviem spojiť dokopi. Ešte keď má firma svoj server len pre seba, ale nie ak sa delím sa priestor s niekoľkými tisícami daľších domén... Či ako???


Camo, nik netvrdi ze je zle ak je stranka rychla. ale existuju aj velke projekty ktore si vyzaduju dost casto upgrade, tvoj programovaci pristup by mozno generoval rychlejsie tie stranky no robit zmeny v tak nakodovanej stranke je narocnejsie. to zistis ak sa niekedy dostanes k nejakemu naozaj rozsiahlemu projektu. OOP umoznuje aj efektivnejsie paralelne programovanie kde viac developerov koduje rozne casti projektu a staci im dohodnut si vyhovujuce interfaces. cize jeden moze robit na vizualnej stranke a dalsi na datovej. vdaka pouzitiu interfaces maju zarucene ze ten co robi vizualnu cast dostane k dispozicii implementacie tried ktore mu v jeho casti projektu budu fungovat bez dodatocnej upravy.


Offline

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

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 27.08.2010 13:07 | Ako optimalizovat vykon triedy

No však keď sa dohodnem s niekým, ako to bude pracovať, tak v pohode. Samozrejme že obsah sa má oddeliť od formy, ale v tom problém môjho prístupu nevidím. Veď tá trieda nieje pevnou súčasťou stránky. ak tam chceš mať niečo iné zavoláš iný render() To menu predsa nemá nič čo by definovalo jeho vizuálnu stránku, či jeho umiestnenie, to je vec CSS. Môžeš si z neho spraviť rozbalovacie aj vysúvacie a všetko na dvoch miestach. Trochu v metóde render, trochu v CSS. Ani v zložitejších projektoch nepredpokladám jednoduchšie riešenie.
Ako to podla teba môj prístup obmedzuje?? Možno sa opakujem, ale asi mi to ešte nedochádza.


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 : 27.08.2010 13:25 | Ako optimalizovat vykon triedy

camo píše:
No však keď sa dohodnem s niekým, ako to bude pracovať, tak v pohode. Samozrejme že obsah sa má oddeliť od formy, ale v tom problém môjho prístupu nevidím. Veď tá trieda nieje pevnou súčasťou stránky. ak tam chceš mať niečo iné zavoláš iný render() To menu predsa nemá nič čo by definovalo jeho vizuálnu stránku, či jeho umiestnenie, to je vec CSS. Môžeš si z neho spraviť rozbalovacie aj vysúvacie a všetko na dvoch miestach. Trochu v metóde render, trochu v CSS. Ani v zložitejších projektoch nepredpokladám jednoduchšie riešenie.
Ako to podla teba môj prístup obmedzuje?? Možno sa opakujem, ale asi mi to ešte nedochádza.


v tvojom pripade kazda nova trieda bude musiet odznova riesit parsovanie suboru pokial budes pisat novy renderer lebo parsovanie suboru je sucastou renderera.
dalsia vyhoda oddelenia loadera a renderera je vtom ze ak sa zmeni format suboru alebo nebodaj zdroj dat pre menu ako taky tak sa iba vytvori nova trieda odvodena od povodnej a overidne sa iba funkcia load() , funkcia render sa zdedi v povodnom stave.


Offline

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

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 27.08.2010 14:00 | Ako optimalizovat vykon triedy

Nejako sa v tom tvojom (značne teoretickom modeli) motám. Toto predsa nieje operačný systém, ale stránka... Ty predpokladáš toľko úrovní dedenia, že to podla mňa nieje reálne vo www využiteľné. Alebo nechápem?
Ach jo...

Má ešte niekto nejaké zaujímavé pripomienky...


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30
NapísalOffline : 27.08.2010 14:05 | Ako optimalizovat vykon triedy

camo, pri stránkach aké sa tu najčastejšie prezentujú na fóre je oop viacmenej zbytočné.. problém nastáva pri rôznych portáloch a rozsiahlych stránkach, tam sa bez oop nepohneš a to sa ti tu snažili vysvetliť. optimalizácia triedy nespočíva len v optimalizácii rýchlosti, ale aj prehľadnosti, znovupoužiteľnosti... väčšina odporcov oop pri php v živote nepracovala na rozsiahlych projektoch


_________________
C#, PHP, ...
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 : 27.08.2010 14:11 | Ako optimalizovat vykon triedy

presne ako povedal walter :)
apropo mam dojem ze v tej ulohe co si dostal islo aj o poreverenie tvojich znalosti ohladne OOP kedze tam boo jasne pozadovane pouzitie triedy :)


Offline

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

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 27.08.2010 14:22 | Ako optimalizovat vykon triedy

Ja si myslím, že ani stredne veľký portál OOP nepotrebuje.
Asi nemám predstavu, čo taký portál vo vašom prevedení robí...

coldak:

Čo vlastne robí tvoja metóda load().
To načíta do premennej a volá miesto každého (môjho)echo, metódu render(). Lebo to by na výkone moc nepridalo myslím...
Render() by sa volal z load(), alebo z index.php.
A čo by vlastne robil ten render(). Vyechoval by predanú premennú, alebo čo aby to malo nejaký hlbší zmysel okrem prehľadnosti kódu.


Offline

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

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 27.08.2010 14:27 | Ako optimalizovat vykon triedy

coldak píše:
apropo mam dojem ze v tej ulohe co si dostal islo aj o poreverenie tvojich znalosti ohladne OOP kedze tam boo jasne pozadovane pouzitie triedy :)

cize sa opat dostavame k tomu, co som pisal v uvode: je to zbytocna namaha, ked clovek nema dostatok vedomosti a skusenosti... najskor treba problematiku nastudovat a potom sa jej venovat prakticky ;) podobny priklad je, ked zaciatocnik, ktory ledva ovlada zaklady, chce naprogramovat eshop alebo cms...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 : 27.08.2010 14:31 | Ako optimalizovat vykon triedy

camo píše:
Ja si myslím, že ani stredne veľký portál OOP nepotrebuje.
Asi nemám predstavu, čo taký portál vo vašom prevedení robí...

coldak:

Čo vlastne robí tvoja metóda load().
To načíta do premennej a volá miesto každého (môjho)echo, metódu render(). Lebo to by na výkone moc nepridalo myslím...
Render() by sa volal z load(), alebo z index.php.
A čo by vlastne robil ten render(). Vyechoval by predanú premennú, alebo čo aby to malo nejaký hlbší zmysel okrem prehľadnosti kódu.


funkcia load() by mala rozparsovat zdroj dat , v tvojom pripade textovy subor do nejakej inej struktury, napriklad viacrozmerne pole:
Kód:
array("TV, audio, video",
         array("LCD televízory",
                   array("JVC",
                            "LG",
                            "Panasonic",
                            "Philips",
                            "Samsung",
                            "Sony"
                           )
                 ),
          array("LED televízory"
                 ) ,
          array("Plazmové televízory"
                 ) ,

        )


funkcia render() by potom z toho pola vygenerovala html content v tvojom pripade MENU.


Offline

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

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 27.08.2010 14:44 | Ako optimalizovat vykon triedy

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.

Ja skúsim tú moju triedu nejako vylepšiť a potom vám to dám zhodnotiť... Napadá ma že by sa dala veľmi legantne použiť tá tvoja funkcia strspn().
Jedno volanie a vráti level aj položku bez toho zverského poľa...
Veď povedz prečo to pole tam musí byť???


Offline

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

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 27.08.2010 14:49 | Ako optimalizovat vykon triedy

rekurzia ti nieco hovori?


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

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

ale prečo tam má byť vykonaná dva krát. Prvý krát, keď je pole generované, druhý krát, keď sa z neho načítajú dáta.


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 12:00 | Ako optimalizovat vykon triedy

camo píše:
ale prečo tam má byť vykonaná dva krát. Prvý krát, keď je pole generované, druhý krát, keď sa z neho načítajú dáta.


preco nezbuzerujes aj tvorcov prehliadacov preco si najprv z html vytvaraju DOM a az ten potom redneruju ?:) ved vytvaranie DOMu je podla teba zbytocny medzikrok :) a ked uz budes rozbehnuty, tak napis aj do php naco vytvarali connector do MySql co vracia nejake pole ked je to zbytocne a ty si to radsej nacitas priamo z ich datasuborov aby to bolo supis brutal rychlejsie :)


 [ 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

355

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

324

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

324

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

221

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

73

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

476

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

1517

03.06.2009 13:27

McDog

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

AKO ZVYSIT VYKON ASUS EN8800GTS 640MB

v nVidia grafické karty

23

759

29.11.2007 16:31

mimkork

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

Ako sa meria vykon grafickych kariet?

v ATI/AMD grafické karty

5

466

18.07.2009 9:09

Spirit

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

ako zlepsit vykon a dosah wifi siete

v Siete

2

415

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

3598

17.03.2008 17:30

Romi

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

338

17.12.2009 0:25

eXistenZ

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

353

10.10.2011 12:10

jbakos

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

336

23.12.2008 20:06

Triminka

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

Forko triedy

v Redakčné systémy

7

503

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

693

15.09.2017 11:54

Nair0n



© 2005 - 2017 PCforum, edited by JanoF