DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 15. 05. 2006.   #1
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default PHP optimizacija

Naleteo sam na interesantan članak sa nekim primerima optimizacije PHP koda, da li je neko od vas merio nešto slično. Neki rezultati su očekivani (recimo str_replace vs reg exp za stringove) ali me (blago) iznenadjuju neki drugi.

Članak je ovde: http://blogs.hackerscenter.com/dcrab/?p=9
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 15. 05. 2006.   #2
Bojan Zivanovic
profesionalac
Professional
 
Avatar Bojan Zivanovic
 
Datum učlanjenja: 06.06.2005
Lokacija: Pančevo - Pariz
Poruke: 287
Hvala: 6
8 "Hvala" u 8 poruka
Bojan Zivanovic is on a distinguished road
Pošaljite poruku preko Skype™ za Bojan Zivanovic
Default

Za include sam znao da usporava kod, al ipak, prednosti su mnogo vece od mana (ko zeli da odrzava index.php koji ima 5000 linija koda)..
Takodje jedna od cestih gresaka kod pocetnika:
PHP kôd:
while($i count($array)) {
 
// radi nesto

Dakle ako $array ima 100 clanova, ciklus ce 100 puta izracunati broj clanova niza,pa izvrsiti kod... Dakle, mnogo pametnije je uraditi ovako nesto:
PHP kôd:
$cnt count($array);
while(
$i $cnt) {
 
// radi nesto

Naravno, najvise vremena u izvrshavanju skripte ode na rad sa bazom i fajlovima, tako da te delove treba najvise optimizirati..
Ipak, to je prica za sebe.
Za reference znam da je nesto promenjeno u PHP5, al nisam siguran sta..
Verujem da ima veze sa objektno orjentisanim programiranjem, tako da savet naveden u clanku i dalje stoji...
Kao i sigurnost, optimizacija oduzima najmanje vremena ako se neke stvari odrade kako treba na samom pocetku.
Naravno, op code cache-eri kao sto je PHPAccelerator i i sl mnogo pobojsavaju performanse, i prava je glupost ne koristiti ih kod vecih projekata.

Dobar link iz online knjige pomocu koje sam se ja upoznao sa php-om:
http://hudzilla.org/phpbook/read.php/18_0_0
Vecina vas sigurno zna vecinu ovih saveta (lakse sa funkcijama, keshiranje..), al nije lose pomenuti...
__________________
The knack of flying is learning how to throw yourself at the ground and miss.

Poslednja izmena od Bojan Zivanovic : 15. 05. 2006. u 22:52.
Bojan Zivanovic je offline   Odgovorite uz citat
Staro 15. 05. 2006.   #3
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default

Iskreno, ocekivao sam vise od jednog clanka o optimizaciji. Prvo, razocaran sam samom benchmark metodom (microtime vs. xdebug na primer). Drugo, autor teksta nije ni zagrebao temu optimizacije, a primeri su uglavnom lose izabrani.

Posto je ovo pro forum a moja malenkost moderator PHP foruma, evo sta je autor u gornjem clanku propustio.

1) "Premature optimization is the root of all evil." (Donald E. Knuth)
2) "When developing applications, the first stage should be to make design your top priority; we should sacrifice performance in favor of a well designed application architecture, and allow our code to be flexible and maintainable. In general, assuming you haven’t made any critical mistakes in your code, performance is really a hardware issue (i.e. you have the option to throw memory,faster processors etc. at the problem);" (Harry Fuecks)
3) "Fast programmers cost more than fast microprocessors!" (Harry Fuecks)

A sada evo i nekih tehnika:

- Most Probably First:
Kod koriscenja if-else uslova, u prvi if uvek treba stavljati uslov koji će se verovatnije izvršiti. Na primer ako imamo $foo_boolean za koji znamo da će prilikom izvršavanja scripta skoro sigurno biti true onda treba :

PHP kôd:
if($foo_boolean === true)
{
    
//do foo
}
else
{
   
//doo foo else

- For Loop
Kao što Bojan reče, unutar for i while petlji ne stavljati count već van njih. Dakle ne:

PHP kôd:
for($i=0$i<count($foo_array); $i++)
{
    
//do foo

već

PHP kôd:
$count count($foo_array);
for(
$i=0$i<$count$i++)
{
    
//do foo

- Lazy Inclusion
Već smo videli koliko "košta" jedan include praznog fajla. Zamislite tek include neke klase (ili više njih). U slučaju da nam to nije neophodno možemo koristiti tzv "Lazy Inclusion":

PHP kôd:
<?php
class LazyInclude 
{
    var 
$session;
    
    function 
LazyInclude()
    {
        
// Include the class as it's needed
        
require_once 'Session/Session.php';
        
$this->session = &new Session();
    }
}
$li = new LazyInclude();
?>
(primer preuzet iz php anthology 2)

- Use Single Quotes
Negde sam ovo pročitao, a negde i da je to jedna od urbanih legendi. Elem, po nekima, korišćenje jednostrukih navodnika je brže (što donekle ima smisla jer onda engine ne traži escape karaktere).

- Encode Script
Encodovan script (http://www.zend.com/products/zend_guard) radi oko 100% brže.
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!
dinke je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #4
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Citat:
Originalno napisao dinke
Iskreno, ocekivao sam vise od jednog clanka o optimizaciji. Prvo, razocaran sam samom benchmark metodom (microtime vs. xdebug na primer). Drugo, autor teksta nije ni zagrebao temu optimizacije, a primeri su uglavnom lose izabrani.
Ma da, nebitno, samo mi je članak poslužio kao šlagvort Recimo nisam mislio da je brže

PHP kôd:
for ($i 0$i $n$i++)
{
    echo 
$i;

od

PHP kôd:
$s '';
for (
$i 0$i $n$i++)
{
    
$s .= $i;
}
echo 
$s
Ne zvuči logično pošto browser ionako ne prikazuje ništa dok se ne parsuje ceo script (osim ako mu ne purge-uješ ouptut ručno).

Citat:
Originalno napisao dinke
- Use Single Quotes
Negde sam ovo pročitao, a negde i da je to jedna od urbanih legendi. Elem, po nekima, korišćenje jednostrukih navodnika je brže (što donekle ima smisla jer onda engine ne traži escape karaktere).
Da, ovo je urbana legenda, ali mislim da je na 100 mesta pokazano da je razlika toliko zanemarljiva da i ne može da se prihvati kao neka optimizacija.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #5
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

' vs " - trik je u tome što parser ne juri kroz string unutar single quotes u potrazi za promenljivima. Primer:

PHP kôd:
$string 'neka vrednost';
echo 
'bla bla $string'// bla bla $string
echo "bla bla $string"// bla bla neka vrednost 
Diskutabilno je koliko ovo stvarno utiče na performanse, ali je korišćenje single quotes brže. Nije urbana legenda...

Što se includeova tiše __autoload() kod PHP5 je pravo blago. Plus pogledajte i SmartLoader. Najelegantije rešenje za include klasa koje sam video. Bukvalno me više nije briga gde su mi klase...

Poslednja izmena od Ilija Studen : 16. 05. 2006. u 01:15.
Ilija Studen je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #6
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

You lazu SOB Zar ti nisu klase na jednom mestu? Zar je toliko problem zapamtiti jedan path?
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #7
ppavlovic
expert
Expert
 
Avatar ppavlovic
 
Datum učlanjenja: 27.11.2005
Poruke: 543
Hvala: 47
57 "Hvala" u 31 poruka
ppavlovic će postati "faca" uskoro
Default

Evo jos jedne optimizacije, ali od coveka koji ne gleda da izvuce po neku mikrosekundu vec malo vise.

http://phplens.com/lens/php-book/opt...ugging-php.php

Ovo mu je bio prvi chapter knjige koju je poceo da pise, ali je posle toga uvideo da i nije pisac. Steta... Programer!
ppavlovic je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #8
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

mozda nije veliki gubitak u perfomansama kod upotrebe " umesto ', ali on svakako postoji, jer php ima vise posla. Ako se uzme u obzir da je veliki deo koda obicno neki posao sa stringovima, onda se ti gubici pomnoze bar x50 u skripti prosecne duzine. A kljucno pitanje je zasto koristiti navodnike uopste?
Ok ako zaista imas neke promenjive pa je lakse za pisanje, tome i sluzi...ali jako cesto mogu da se vide primeri gde se koristi iskljucivo ".." za obican plain text. Koja je tu logika ? Cista bahatost sa resursima...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 16. 05. 2006.   #9
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default

Citat:
Originalno napisao Bojan Zivanovic
Za reference znam da je nesto promenjeno u PHP5, al nisam siguran sta..
Promenjeno je to da se objekti uvek prosleđuju po referenci, što nije bio slučaj kod PHP4. Ovo je naročito bio problem kod PHP4, što je rešavano tehnikom korišćenja & operatora (neki bi tehniku nazvali i "Way Too Many Ampersands".
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!
dinke je offline   Odgovorite uz citat
Odgovori



Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
WordPress.com i optimizacija Iceman Marketing i SEO 6 13. 07. 2010. 00:51
MySQL optimizacija bluesman SQL baze podataka - Sponzor: Baze-Podataka.net 2 27. 02. 2009. 16:47
Pomoć: optimizacija za IE6/7! maksim (X)HTML, JavaScript, DHTML, XML, CSS 4 02. 12. 2007. 12:44
CSS optimizacija Vladimir Nikolic (X)HTML, JavaScript, DHTML, XML, CSS 25 23. 08. 2006. 22:54
optimizacija koda? Blood SQL baze podataka - Sponzor: Baze-Podataka.net 12 26. 03. 2006. 18:53


Vreme je GMT +2. Trenutno vreme je 00:56.


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.