Autor | Zpráva | ||
---|---|---|---|
sentinelcz Profil * |
#1 · Zasláno: 10. 3. 2008, 23:08:23
Zdravim vsechny,
Chtel bych co nejvice optimalizovat kod a mam dve moznosti (priznam se ze jsem hledal na netu a nenasel tuto pro me zakladni vec): Struktura A, <?php echo "<div>"; // kus funkcniho kodu 1 echo "</div>"; echo "<div>"; // kus funkcniho kodu 2 echo "</div>"; ?> Struktura B, <div> <?php // kus funkcniho kodu 1 ?> </div> <div> <?php // kus funkcniho kodu 2 ?> </div> Kterou strukturu mam pouzivat aby bylo zpracování co nejrychlejsi ? Dekuji za odpoved |
||
Alphard Profil |
#2 · Zasláno: 10. 3. 2008, 23:15:31
nevím, která varianta je rychlejší, ale rozdíly budou zanedbatelné, optimalizaci soustřeď na věci jako jsou dotazy na databázi, zpracování řetězců, efektivní práce cyklů apod.
|
||
Dranel Profil |
#3 · Zasláno: 10. 3. 2008, 23:24:43
sentinelcz
A optimalizuj také délku kódu. |
||
souki Profil |
#4 · Zasláno: 11. 3. 2008, 01:46:52
Dranel
proč? sentinelcz říká se, že první varianta je lepší. Nevím co je na tom pravdy. |
||
anode Profil |
#5 · Zasláno: 11. 3. 2008, 02:26:36
Optimalizaci soustřeď především na čitelnost kódu. Zrovna toto je zcela minimální rozdíl výkonu, který nebude mít žádný vliv. To už bych mohl rovnou říkat, že jsou lepší apostrofy než dvojité uvozovky, když v nich je konstatní řetězec. U toho se taky říká, že první varianta je lepší...
|
||
sentinelcz Profil * |
#6 · Zasláno: 11. 3. 2008, 07:26:35
Děkuji za radu a mám jěstě jednu věc, která s tím souvisí.
Do proměnných ukládám kus HTML kódu a později to vypisuji. Např.: <?php $test1 = "<div>bla bla bla</div><img src xxxxxxxxxxxxxxxxxxxxx docela dlouhy string />"; $test2 = "<span>bla bla bla</span>"; echo ="$test1"; ?> Nemůže mě to někde později vytrestat? Je to korektní? |
||
Měsíček Profil |
#7 · Zasláno: 11. 3. 2008, 08:01:03
echo = "$test1"; ?? Proč když stačí přeci jen echo $test1; ne?
Jinak já bych se přikláněl k první variantě ta druhá může být ve větších skriptech dosti nepřehledná. |
||
sentinelcz Profil * |
#8 · Zasláno: 11. 3. 2008, 08:55:54
Měsíček
Jo jasne, mas pravdu, ja to psal v rychlosti. Jaky mas na to nazor? Je to korektni ? (ukladat kusy HTML kodu do promennych) |
||
Měsíček Profil |
#9 · Zasláno: 11. 3. 2008, 08:56:56
Já si myslím, že ukládat HTML tagy do proměnných není nic nebezpečnýho .. takže myslím, že to korektní je.
|
||
Alphard Profil |
#10 · Zasláno: 11. 3. 2008, 09:03:45
sentinelcz
PHP interpretuje server a html až prohlížeč ukládání tagů do proměnných není žádný problém a s výjimkou šablonovacích systémů běžná praxe |
||
WertriK Profil |
#11 · Zasláno: 11. 3. 2008, 09:28:14 · Upravil/a: WertriK
Na netu jsem vyčenichal dobrý článek s optimalizací php kódu a hlavně jak co psát a co je jak pomalejší.
Bylo tam třeba, pokud se nepletu, že je lepší psát echo "text ".$promenna."text"; než echo "text $promenna text"; Ještě tam bylo srovnání s apostrofama echo 'text '.$promenna.'text'; Bohužel už si to moc nepamatuju a ten web už neexistuje, pokud tady někdo kolem tohodle něco ví, mohl by se připojit taky do diskuse. Našel jsem zajmavé čtivo http://www.ilia.ws/files/zend_performance.pdf od 32 stránky |
||
sentinelcz Profil * |
#12 · Zasláno: 11. 3. 2008, 09:43:59
WertriK
Add1. To by se moc hodilo, hlavne by byly ucelene informace jak psat kod od zacatku spravne a ceho se vyvarovat. Vim ze tecka pred je "spojovaci clen", ale neznam tecku za promennou. Je ta tecka za promennou spravna ? |
||
jaco Profil |
#13 · Zasláno: 11. 3. 2008, 10:51:34
Bodka . je operátor na spájanie reťazcov, je jedno, či ho máš priamo zapísaný, alebo v premennej.
Čo sa týka rýchlosti: echo "text $promenna text"; echo "text ".$promenna."text"; echo 'text '.$promenna.'text'; Prvý prípad bude najpomalší, pretože sa reťazec musí parsovať a potom v ňom nahradzovať premenná. Spojenie troch reťazcov v druhom prípade bude rýchlejšie. No a tretí prípad by mal byť najrýchlejší, pretože reťazce zapísané v úvodzovkách sa neprehľadávajú pre premenné. To nie je nič nové, no rozdiel v rýchlosti bude minimálny, podľa mňa určite zanedbateľný. Takže používajte, čo vám osobne vyhovuje a čas šetrite inde. |
||
sentinelcz Profil * |
#14 · Zasláno: 11. 3. 2008, 14:08:35
Jsem docela rad, ze lidi zde pomohou i se zakladama.
Neni mi jeste jasny rozdil mezi echo 'prvni text <br /> druhy text' echo 'prvni text\n druhy text' Me se to chova ve vysledku stejne. Co mam pouzivat ? |
||
Měsíček Profil |
#15 · Zasláno: 11. 3. 2008, 14:10:22
nechová \n zalomí řádek v kódu <br> zalomí řádek ve stránce v prohlížeči.
|
||
nightfish Profil |
#16 · Zasláno: 11. 3. 2008, 14:38:13 · Upravil/a: nightfish
akorát mám dojem, že \n se v případě uzavření do apostrofů nevyhodnotí, tzn. nic se nezalomí, vypíše se (např.) test\ntest
|
||
Leo Profil |
#17 · Zasláno: 11. 3. 2008, 15:09:59
Rekl bych, ze michani php a html kodu takovym divokym zpusobem jako je treba html kod v php promenne je to nejhorsi reseni, Leo
|
||
sentinelcz Profil * |
#18 · Zasláno: 11. 3. 2008, 20:45:32
Leo
Jaké potíže mohou nastat? |
||
Měsíček Profil |
#19 · Zasláno: 11. 3. 2008, 20:58:45
Nevidím v tom Leo nic špatného .. zkus to kdyžtak rozvést.
|
||
jaco Profil |
#20 · Zasláno: 11. 3. 2008, 21:01:44
sentinelcz
Měsíček Myslím, že Leovi ide iba o prehľadnosť kódu. |
||
Mastodont Profil |
#21 · Zasláno: 11. 3. 2008, 22:15:14 · Upravil/a: Mastodont
jaco
Ještě rychlejší než ten tvůj třetí případ bude echo 'text' , $promenna , 'text'; protože tam se nic spojovat nemusí :) |
||
tiso Profil |
#22 · Zasláno: 11. 3. 2008, 22:27:58
Myslím že Leovi ide o oddelenie vrstiev (aplikačnej a prezenčnej)...
|
||
Leo Profil |
#23 · Zasláno: 11. 3. 2008, 23:45:08
"Myslím že Leovi ide o oddelenie vrstiev (aplikačnej a prezenčnej)..."
Bingo. Leo |
||
Fibi Profil * |
#24 · Zasláno: 12. 3. 2008, 09:09:08
Tak to tak čtu a napadlo mně proč tu rychlost vypisování neotestovat že ?
Zkusil sem vytvořit malej scriptik s cyklem na 100 000 opakování, při každém vypsal jedním z uvedených způsobů testovací řetězec a měřil sem rychlost provedeni scriptu. Výsledky : echo "text $promenna text"; - 3.5236 echo "text ".$promenna."text"; - 3.2090 echo 'text '.$promenna.'text'; - 3.2240 echo 'text' , $promenna , 'text'; - 2.9812 Jsou to výsledky vždy po 5ti spuštěních scriptu, PC byl během té doby bez jakýchkoliv dalších dotazů na apache a před každou sérií jsem apache resetnul. Test je samozřejmě syntetický, v praxi bude někdo dost těžko vypisovat 100 000 řádků :-) No řek bych že správnými indexy v tabulce se obvykle docílí lepšího zrychlení :-) A další test k původní otázce : ?> <div> <?php echo 'text' , $promenna , 'text'; ?> </div> <?php za : 7,0168 A echo '<div>text' , $promenna , 'text</div>'; za : 6,749 Stejne podminky jako u samostných řetězců. |
||
Měsíček Profil |
#25 · Zasláno: 12. 3. 2008, 12:11:49
Fibi :) zajímavý něják tak jsem to odhadoval.
Mohl by jsi zde prosím zveřejnit kód, který zachycuje rychlost a čas provedení skriptu? Ještě pár věcí bych si rád ověřil. |
||
Fibi Profil * |
#26 · Zasláno: 12. 3. 2008, 15:37:53
Jasně celý testovací kód :
$tmp=explode(" ",microtime()); $startStranky = $tmp[1]+$tmp[0]; $promenna = 'Testovaci retezec vcelku nepodstatne, ale nutne'; for ($i = 0; $i <= 100000; $i ++): //echo "text $promenna text"; //echo "text ".$promenna."text"; //echo 'text '.$promenna.'text'; //echo 'text' , $promenna , 'text'; endfor; $tmp=explode(" ",microtime()); $dobaZpracovani=number_format(($tmp[1]+$tmp[0])-$startStranky,7); echo "<br /><strong>Stráka byla zpracována za $dobaZpracovani s. </strong>"; |
||
Timy Profil |
#27 · Zasláno: 12. 3. 2008, 15:46:34 · Upravil/a: Timy
Co místo toho všeho používat třeba Nette::Html?
|
||
Retal Profil |
#28 · Zasláno: 12. 3. 2008, 17:39:31
Oboje je špatně, použij šablony, důvod viz Leo.
|
||
sentinelcz Profil * |
#29 · Zasláno: 13. 3. 2008, 11:47:28
Fibi
Díky za příklady, také si to zkusím, myslím že jsou velmi užitečné. Vrátil bych se k tomu co mě vedlo vložit HTML kód do proměnné. Ten důvod byl právě citelnost kódu. Je to jednoduchá šablona která vypisuje hodnoty a mění podle těchto hodnot i design. Jednoduše vyhodnocuji podmínku (testuji cca 40 hodnot jestli jsou A, nebo B) v A mám již zmíněný HTML kód a když to přeženu , je to dejme tomu 10 řádek v B mám jiný HTML kód a ten má dejme tomu 50 řádek. To všechno dělám , jak jsem psal, 40 krát. Pokud bych nepoužil proměnnou a vypisoval bych samotné HTML kódy, měl bych stránku s kódem daleko objemnější. Takto je ta stránka s kódem poloviční. Jaký máte na to názor ? |
||
Měsíček Profil |
#30 · Zasláno: 13. 3. 2008, 11:55:08
Že je rychlejší i lepší psát ve většině případů HTML do echa než uzavírat a zase otevírat zápis PHP, ale je ještě jedna možnost, žel pomalá.
$proměnná = <<<XXX <table border="1"> <tr><td> $proměnná_2 </td></tr> </table> <span style="background: gold;"> Cokoliv </span> XXX; |
||
Téma pokračuje na další straně.
|
0