DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Skraćenice i optimizacija (http://www.devprotalk.com/showthread.php?t=334)

nixa 06. 11. 2005. 04:24

Skraćenice i optimizacija
 
Nešto gledam i pitam se ko od vas sve koristi skraćenice zarad brzine a ko zarad optimizacije aplikacije

recimo ovo

PHP kôd:

<?=$var;?>

// umesto ovog 

<? echo $var?>

ili mozda ovako nesto

PHP kôd:

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

//  ili  

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

ajde sad vi nesto ?

dinke 06. 11. 2005. 09:50

Što se tiče prvog primera, ne koristim ni jedan ni drugi. :)

Već ovako:
PHP kôd:

<?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. 10: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. 16: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. 17: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).

Kôd:

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:

Kôd:

<?= '<?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. Sa 5 puta manje koda postižeš 5 puta više. Prilično dobra ponuda ;)

nixa 06. 11. 2005. 17:52

A sta se desava kad imas microtime proveru izvresnja skripte

PHP kôd:

<?
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. 22:29

nixa, za početak pogledaj ovaj unos.
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. 01:33

short_open_tag je po defaultu Off u 5.1.2... Debilno!

bluesman 19. 03. 2006. 01:39

Pa tako i treba da bude, you lazy ... :)

Ilija Studen 19. 03. 2006. 02: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. 10: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. 14:27

Najmanji problem dodati:

Kôd:

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. 17: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?

Kôd:

ini_set('short_open_tag', 1);
Kôd:

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. 18:06

Paraonični my ass. To su likovi koji još uvek imaju register-globals aktivan.

Dušan Dželebdžić 19. 03. 2006. 21: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. 04: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. 07: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. 16:26

Čemu mješanje PHP i X/HTML codea kada postoji Smarty?

Ilija Studen 03. 04. 2006. 16:52

Postoji par jako dobrih razloga, ali da se ne ponavljam pogledaj ovu temu. Pogledaj pa razmisli još jednom da li, kome i kada ima smisla ;)

cvele 03. 04. 2006. 22:34

za zasto postoji {php}{/php} :P

Ilija Studen 03. 04. 2006. 23: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. 00:27

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

Ilija Studen 04. 04. 2006. 01: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. 07:28

ja koristim <? umesto <?php zasto ? ZATO STO ME MRZI DA OTKUCAM TRI KARAKTERA :)

bluesman 04. 04. 2006. 15: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
PHP kôd:

foreach ($ as $key => $row)
{
    


i kursor je odmah iza $

Isto tako, cim ukucam <table (sa space iza)
dobijem
HTML kôd:

<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. 15:32

nije ni cudo sto neces da se odvojis od HS ni za zivu glavu :P

Ilija Studen 04. 04. 2006. 15: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. 16: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. 13: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. 14:13

Citat:

Originalno napisao bluesman
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. 16: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. 22: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. 16: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. 00: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. 03: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. 09:23

Citat:

Originalno napisao ivanhoe
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. 18:16

a koji su to alati ?


Vreme je GMT +2. Trenutno vreme je 01:28.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.