PDA

Pogčedajte punu verziju : Skraćenice i optimizacija


nixa
06. 11. 2005., 05:24
Nešto gledam i pitam se ko od vas sve koristi skraćenice zarad brzine a ko zarad optimizacije aplikacije

recimo ovo


<?=$var;?>

// umesto ovog

<? echo $var; ?>



ili mozda ovako nesto


if ( isset( $nesto ) )
{
$var = 'da';
}
else
{
$var = 'ne';
}

// ili

$var = isset( $nesto) ? 'da' : 'ne' ;



ajde sad vi nesto ?

dinke
06. 11. 2005., 10:50
Što se tiče prvog primera, ne koristim ni jedan ni drugi. :)

Već ovako:
<?php echo $var; ?>
Slučaj koji si ti naveo radi samo ako je --enable-short-tags setovan na On.

Što se tiče drugog primera, uvek težim da koristim if-else petlju pre nego tzv "ternarni operator", pre svega zato što smatram da je onda kod čitljiviji.

Petar Marić
06. 11. 2005., 11:07
Prvu nikad ne koristim jer onda imam problema sa XML-om (<? je rezervisano za XML proccessing instrukcije). S obzirom da (gotovo uvek) šaljem XHTML 1.1, ne koristim istu.
Takođe, ne vidim kako si ubrzao ili optimizovao aplikaciju ako si izostavio 3 karaktera? Jedino ako misliš na nekog programera kome je mrsko otkucati dodatni "php" nakon "<?".
Naravno mogli bismo da počnemo o malom teoretskom ubrzanju koje se javlja kao posledica parsiranja manje datoteke, ali ajde da ne zalazimo tamo, važi?

Druga ti je standardni C-ovski ternarni operator ;) Postoje vremena kad ga treba koristiti, postoje vremena kad ne treba - obično se treba čuvati tzv "bočnih efekata" (side efects).

bluesman
06. 11. 2005., 17:46
Koliko znam, svi iole ozbiljni editori imaju code-completition pa kada ukucas <? odmah ti dodaje <?php i ?>. Bar je tako u homesite (doduse to sam ja namestio :)).

Ne, nikada na koristim shorthand tagove ni <? ni <?= ni slicno.

Ilija Studen
06. 11. 2005., 18:33
Mnogo koristim i prvi i drugi način skraćivanja. Prvi način skraćivanja koristim samo u templateima (u ostalim fajlovima koristim klasični <?php ... ?>), a drugi koristim gde god mogu i gde je to razumno (meni deluje čitkije).

ini_set('short_open_tag', 1);

Rešava stvar ako je su skraćeni tagovi isključeni na serveru. Ko je ikada rekao da si osuđen na ono što server admin misli da dobro i što je podesio? ;)

Što se tiče XML i XHTML dokumenta jednostavno rešenje:

<?= '<?xml version="1.0" encoding="UTF-8"?>' . "\n" ?>

Sa XMLom i XHTMLom radim uvek i u ovome nikad nisam video problem. Ne znam zašto bi ti to smetalo? Ako uhvatiš sebe da to previše puta kucaš / kopiraš promeni način rada jer to što radiš ne valja :p

Ne volim mnogo koda. Deluje mi zabacano... Zato ću se najverovatnije u neko dogledno vreme (kad me puste trenutne obaveze) i prebaciti na Ruby (http://www.ruby-lang.org/en/). Sa 5 puta manje koda postižeš 5 puta više. Prilično dobra ponuda ;)

nixa
06. 11. 2005., 18:52
A sta se desava kad imas microtime proveru izvresnja skripte


<?
for ($i=0; $i < 1000000; $i++)
{
echo('i='.$i.'<br/>');
}
?>

// vs

<?
for ($i=0; $i < 1000000; $i++)
{
?>
i=<?=$i;?><br>
<?
}
?>

Petar Marić
11. 11. 2005., 23:29
nixa, za početak pogledaj ovaj unos (http://www.devprotalk.com/showpost.php?p=2374&postcount=18).
Po mom skromnom mišljenju micro-benchmarci nemaju puno smisla. Vremenski najskuplje stvari u web programiranju su IIRC upiti ka bazi, fajl sistemu i mrežnim resursima (ne obavezno tim redosledom).

Najveće greške u optimizaciji (posle premature optimisation) nastaju kada neko odokativno počne da profiliše kod. Učili su me da je empirijski pokazano da se 5% koda izvršava 95% vremena. Tome služe profiling alati:
1. pomognu ti da nađeš uska grla,
2. pokažu ti realan dobitak u perfomansama nakon uklanjanja istih.

Što se tiče primera koje si dao, na stranu što nije realan, pre bih izabrao prvi: čitljiviji je, ako ništa drugo.

Ilija Studen
19. 03. 2006., 02:33
short_open_tag je po defaultu Off (http://www.ilija.biz/area51/entry/short_open_tag-off.html) u 5.1.2... Debilno!

bluesman
19. 03. 2006., 02:39
Pa tako i treba da bude, you lazy ... :)

Ilija Studen
19. 03. 2006., 03:46
Ono što meni ne ide u glavu je ZAŠTO tako mora da bude? Fino je što postoji opcija da se takvo ponašanje uključi / isključi ali zašto mora biti off po defaultu? Ja ne vidim razlog za to.

PS: Kratko otvaranje tagova koristim samo za brz echo. Umesto <?php echo $variable ?> kucam <?= $variable ?>. Za otvaranje i zatvaranje fajlova, blokova PHP koda itd koristim klasičan <?php ... ?>

noviKorisnik
19. 03. 2006., 11:19
Pa menjaj default vrednost ako ti se ne dopada. Postavljeno je tako ... ako recimo praviš portabilan softver da se izbegne mogući problem.

ps - za brz echo koristim <?php echo $variable; ?> - a to će raditi na svakoj konfiguraciji.

Ilija Studen
19. 03. 2006., 15:27
Najmanji problem dodati:

php_value short_open_tag On

U .htaccess, samo opet mi nekako glupo. Ne pratim PHP internals pa da znam da li ima više razloga za ovu odluku od onih navedenih u manualu (XML prolog) pa sam pitao da vidim da li neko ima više informacija ;)

misk0
19. 03. 2006., 18:02
U cemu je razlika izmedju ova dva metoda? Eventualno scope tj .htaccess vrijedi za sve fajlove (ukoliko ne postoji drugi .htaccess) unutar direktorija, a ovaj ini_set vrijedi za samo php fajl u kome je napisano?

ini_set('short_open_tag', 1);
php_value short_open_tag On


.htaccess je OK metoda ako je dozvoljena, znaci ne mozes racunati da ces na sve i jednom hosting provajderu imati 'override' varijabli... recimo ljudi imaju problema sa paranoicnim Eunetom i safe mode-om.

Petar Marić
19. 03. 2006., 19:06
Paraonični my ass. To su likovi koji još uvek imaju register-globals aktivan.

Dušan Dželebdžić
19. 03. 2006., 22:26
I PHP u safe modu. I najsiromašniju PHP instalaciju koju sam video. I nemogućnost menjanja filesystem dozvola od strane korisnika.

ivanhoe
20. 03. 2006., 05:08
short forma tagova je zgodna kad god se koristi php kao templejt jezik, upravo zato je razvijena, i ja je za to i koristim... sem u templejtima php tagove nikad ne pisem u istoj liniji sa kodom, ali kad se mesha php i hrml onda je skraceno pisanje citljivije .....u principu ne pravim skripte koje treba da rade na svakoj mogucoj konfiguraciji, ja ih sam postavljam na svoje servere, pa mogu i da namestim da sve radi ocekivano...ako ikada budem pravio neku public skriptu onda cu verovatno ispostovati punu formu pisanja, ali do tad nemam potrebe da se opterecujem hipotezama tog tipa, koristim najkracu i najcitljiviju varijantu... i radi...a sve sto radi ne treba dirati :)

Ilija Studen
20. 03. 2006., 08:23
Ista priča.

Ako budeš trebao da praviše nešto što treba da se vozi i na svim zamislivim instalacijama onda odradiš jedan search and replace i zameniš <?= sa <?php echo. To čak možeš da staviš kao task svog build alata i prestaneš da razmišljaš o tome.

zidoo
03. 04. 2006., 17:26
Čemu mješanje PHP i X/HTML codea kada postoji Smarty?

Ilija Studen
03. 04. 2006., 17:52
Postoji par jako dobrih razloga, ali da se ne ponavljam pogledaj ovu temu (http://www.devprotalk.com/t227-zato-smarty.html). Pogledaj pa razmisli još jednom da li, kome i kada ima smisla ;)

cvele
03. 04. 2006., 23:34
za zasto postoji {php}{/php} :P

Ilija Studen
04. 04. 2006., 00:15
A zašto izmišljati novi template jezik u jeziku koji je nastao kao template jezik, ima odlične template mogućnosti i snalazi se jako lepo unutar HTML fajlova? Zašto dodavati 200kb koda za nešto što može da se reši sa 4kb, a da zadrži istu funkcionalnost i pruži sve prednosti datog rešenja?

Poenta uopšte nije u ubacivanju PHPa u template, već korišćenju čistog PHPa za template.

Smarty je vremenom stekao takav status da je bio must za svaki profesionalan razvoj. Tipa "Ti nisi pro ako ne koristiš Smarty" ili "Smarty je potreban da bi aplikacija bila dobra" i slične varijante.

Međutim, ono što je istina je da je Smarty odličan za početnike jer ih PRISILJAVA da odvajaju template od svog koda i da ga većina nakon tog perioda koristi više po inerciji nego zato što ima stvarnu potrebu za tim. Kad malo uznapreduješ vidiš da je isto moguće postoći i bez 200kb koda, kompajliranja, nove sintakse i svih lepota što uz to sve idu ;)

bluesman
04. 04. 2006., 01:27
Ilija, brate rođeni, šta ti pričaš kewe ti... opet si čitao neke blogove? :)

Ilija Studen
04. 04. 2006., 02:02
Hehe. Ništa :) Samo sam hteo reći da je korišćenje Smartyja nepotrebno u većini slučajeva jer se potpuno ista stvar može postići sa mnogo lakšim klasama koje koriste PHP kao osnov za template.

cvele
04. 04. 2006., 08:28
ja koristim <? umesto <?php zasto ? ZATO STO ME MRZI DA OTKUCAM TRI KARAKTERA :)

bluesman
04. 04. 2006., 16:14
Pa to je tek najmanji problem, ja imam podečeno da čim ukucam <? odmah doda php ?>, znaci odmah imam ceo blok <?php ?>. Ne mogu da shvatim da nekoga to mrzi, narocito posto ne mora da se kuca?

Napravio sam dvadesetak Auto completition (u hs) i recimo kada kucam
foreach
odmah dobijem
foreach ($ as $key => $row)
{

}

i kursor je odmah iza $

Isto tako, cim ukucam <table (sa space iza)
dobijem
<table width="" cellpadding="2" cellspacing="0" border="0">
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr valign="top">
<td></td>
<td></td>
</tr>
</tbody>
</table>

To sve puno pomaže i ubrzava, ne samo što ne mora da se "kuca" već sigurno nema ni slovnih grešaka što je uvek najveći smor.

nixa
04. 04. 2006., 16:32
nije ni cudo sto neces da se odvojis od HS ni za zivu glavu :P

Ilija Studen
04. 04. 2006., 16:52
Templatei su mogućnost koju imaju svi ozbiljniji editori. U Zendu imam definisane template za PHPDoc, kostur klasa, funkcija, ciklusa (foreach, while...), generisanje gettera i settere, brzo pravljenje klasičnih kontrolera itd i stvarno ubrzavaju rad.

Pedja
04. 04. 2006., 17:56
Ne znam sto bi nekoga mrzelo da sredjuje kod. Ja cak volim to da radim, vec dok pisem vodim racuna o formatiranju a ponekad, kada imam neki problem pa mi mozak prokuva ja se relaksiram tako sto uzmem da sredjujem sors, upisujem komentare i slicno...

zidoo
05. 04. 2006., 14:46
Dear Ilija,

Ako praviš bilo kakvu PHP aplikaciju koja ima neki interface (a ne output) korištenje Smartya je zakon.

Smarty dopušta ekstremno, ali ekstremno lako dodavanje novih funkcije, plugina i svega ostalog. Eto aj ti meni navedi zašto je smarty loš kada npr. programiraš neki mali forum, shout box ili šta god već želiš.

(na stranu sve ono da je dizajnerima lakše i blablabal)

Bojan Zivanovic
05. 04. 2006., 15:13
Ilija, brate rođeni, šta ti pričaš kewe ti... opet si čitao neke blogove? :)
:1070:
Iskreno,mislim da mnogi programeri koji koriste smarty grese u tome sto zele da odvoje HTML kod od PHP koda, a ne prezentacionu logiku od ostatka programa... Ako je ovo drugo cilj, onda Smarty i nije potreban (moze neko drugo resenje), te otpada pola stvari koje se navode kao prednosti smartija...

Ilija Studen
05. 04. 2006., 17:56
zidoo, ne moraš me učiti šta se sve može sa Smartyjem i na koje se sve načine može proširiti. Koristio sam ga oko dve godine i radio sa naprednijim mogućnostima (resursima, funkcijama, blokovima, insertima...). Nisam koristio keširanje i pre/post filtere jer nisam ima potrebe za tim, ali znam kako rade i kad se koriste.

Takođe, već nešto manje od godinu dana radim bez njega i samo jednom se Smarty pokazao kao logičan izbor (dati korisniku da možde da edituje neke template kroz admin).

Hvala što si probao da mi "otvoriš oči", ali znam obe strane priče... Jako dobro ;)

andrej
22. 04. 2006., 23:59
Evo jedna interesanta prezentacija, gde je Rasmus Lerdorf sa par trikova uspeo da podigne performanse sa 17req/sec na 1100req/sec.

http://talks.php.net/show/zagreb2/8

Ilija Studen
24. 04. 2006., 17:03
Zanimljiva prezentacija, mada isti proces treba proći za svaku aplikaciju. Ovo je ipak prilično smešna skripta. Na primer, zamena include_once sa include u dosta slučajeva nije opcija jer je jako podložna greškama. Ali encodiranje, korišćenje trajnih konekcija itd su klasika za podzanje performansi skripti.

Btw, zna li neko dobar alat za profiling na Windowsu. Ja koristim XDebug + WinCacheGrind ali je to daleko od ozbiljnijih rešenja na Linuxu.

ivanhoe
25. 04. 2006., 01:29
Sta je taj CallGring koji crta one kul grafike, jel moze neko objasnjenje kako se to koristi ? Deluje mi skroz zanimljivo..

takodje mi se dopala upotreba APC za keshiranje promenjivih u sherovanoj memoriji, to nisam znao da php moze... to je inace fora koju mod_perl i mod_python mogu da rade direktno i mnogo je kul...

@ilija: ja se na windowsu isto drzim xDebug, lako se instalira, a radi posao... Sta ti tacno fali od funkcionalnosti sa xDebug?

Petar Marić
25. 04. 2006., 04:06
Što se tiče deljene memorije nadam se da se zaključava pri svakom čitanju/upisu inače eto nama zabave do 4am :D

Ilija Studen
25. 04. 2006., 10:23
ja se na windowsu isto drzim xDebug, lako se instalira, a radi posao... Sta ti tacno fali od funkcionalnosti sa xDebug?

Upravo nešto kao call grind. XDebug2 nema mogućnosti prikaza podataka koje je sakupio, već jednostavno sve sačuva u ogroman fajl i treba ti dodatni program da bi ih prikazao. WinCacheGrind radi posao, ali alati na Linuxu su znatno bogatiji...

kodi
26. 04. 2006., 19:16
a koji su to alati ?