Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Benchmark PHP skripta

[es] :: PHP :: Benchmark PHP skripta

[ Pregleda: 3041 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zgas

Član broj: 74613
Poruke: 334
213.137.123.*

Sajt: odbrojavanje.com


Profil

icon Benchmark PHP skripta27.08.2007. u 14:48 - pre 202 meseci
Pre nego sto postavim skript na sajt, zelim da na sto precizniji nacin izmerim koliko moj php skript zauzima resurse na mom racunaru.

Posto u skriptu ima i querija bilo bi dobro da znam koliko i posebno mysqk baza opterecuje sistem prilikom izvrsenja ovog skripta.

Kako to da uradim?

Upite mogu da testiram pomocu MySQL administratora, ali cinimi se ne totalno, jer sam primetio da u myql administratoru ostaju iste vrednosti HEALTH dok je vremensko izvrsenje upita mnogo razlicito, a i opterecenje procesora takodje.

Pri izvrsenju PHP skripta opterecenje procesora mi je uglavnom 100%, razlikuje se samo vreme izvrsenja. Za memoriju ne znam.

Da li postoji neko program za sva ova merenja, da bi na dobar nacin sve moga o da testiram?

Hvala.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Benchmark PHP skripta27.08.2007. u 16:40 - pre 202 meseci
Za memoriju koristi funkciju memory_get_usage koja doduše uglavnom ne radi na windowsu ali ćeš na www.php.net u komentarima korisnika naći zamenu.

Za vreme izvršavanja skripta standardna je upotreba funkcije microtime na početku i na kraju skripte pa prikažeš razliku izmerenih vrednosti.

Za vreme izvršavanja MySql upita primeni isto ovo od gore samo na nivou svakog querija pojedinačno i izmereno dodavaj globalnoj vrednosti.

Šta te još zanima, zauzeće hosting prostora, veličina MySql baze,... ?
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta29.08.2007. u 11:56 - pre 202 meseci
Hvala mVeliki. Cini mi se da mi je kljucna stvar da znam koliko skript zauzima resursa samog procesora. Pa me interesuje da li postoji mogucnost za to? Ili neko alternativno resenje.

Sto se tice merenja zauzeca memorije MySQL upita. To mi nije radio, jer pre izvrsenja upita i posle sam dobio istu vrednost. Izgleda da je pomenuta fuinkcija iskljucivo za merenje memorije PHP skripta dok ne prepoznaje sta se desava sa bazom... ako se ne varam?

Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Benchmark PHP skripta29.08.2007. u 13:26 - pre 202 meseci
Eh, hm, izgleda da nisam dobro objasnio, mislio sam da meriš vreme izvršavanja querija, znaš ono što piše na dnu nekog sajta "Izvršeno 12 pristupa bazi za 0.14 sek.".

Što se tiče resursa procesora (CPU usage) mislim da je normalno da zauzme 100% u početku, bitnije je da se skript što pre izvrši nego da štedi CPU. Ako baš hoćeš, posredno, vreme izvršavanja ti dobrim delom sopštava koliko je CPU imao posla (ako izbaciš querije, sockete,...).

Druga je stvar ako pišeš skript koji će se jako dugo izvršavati, ne znam kako onda, uvek mi je prioritet bilo vreme izvršavanja.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta29.08.2007. u 14:02 - pre 202 meseci
Zaista ti puno hvala sto ovako lepo posvecujes paznju ovom problemu.
Jasno mi je sada da je merenje vremena izvrsenja kljucna stvar.

Zelim samo da pomenem i to da sam i ja primetio da je zauzece procesora zaista skoro uvek 100%, bilo da su skripte prostije ili komlikovanije. Kod komplikovanijih je zauzece po pravilu 100%. Mislio sam da je to do mog racunara, koji je PII... Vreme izvrsenja mi je od - 0.7 - 1.5 sekundi prosecno.

Koliko znam, hosting provajderi neke komlikovanije skripte premestaju na druge servere ili cak u tezim slucajevima opominju programera-administratora da prepravi skript. To sam cuo da budem iskren, jer nisam imao iskustva (nadam se da i necu).

Ne znam, koji kriterijum da uzmem pa da budem siguran da skrip nece preopteretiti hosting provajdera, da necu dobiti opomenu? Da li pri tome treba obratiti paznju na neke stvari i koje? Na primer, na to koliko se skrip cesto izvrsava na serveru, na broj izvrsenja querija i samu duzinu izvrsenja querija...

Pomenucu konkretan primer pa me interesuje vase misljenje:
Skript mi se izvrsava dnevno 24 puta uvek. Ucitava 2 klase. Vreme izvrsenja mu je 1,6 sec. Ima oko 8 querija. Zauzece memorije prilikom izvrsenja je oko 1,5MB..

Posebno me interesuje sta mislite u vezi sa ovim poslednjim - zauzece memorije; meni to izgleda malo puno. Ocekivao su velicine reda 10 -20 KB.
Ne znam da je ta vrednost tipicna za malo komplikovanije skripte.

Hvala unapred.


Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Benchmark PHP skripta29.08.2007. u 14:46 - pre 202 meseci
Dozvoljeno zauzeće memorije možeš da vidiš funkcijom phpinfo(), mislim da se stavka zove memory_limit. Čim ju je administrator postavio na neku vrednost (tipično 8M) znači da je toliko dozvoljeno (inače dobijaš fatal error).

Broj izvršavanja takođe ne treba da te brine, procenjujem da se neke skripte na ovom forumu izvrše i po nekoliko puta u jednoj sekundi, pa opet radi. Ali (uvek ima neko ali), ono što treba da te brine se zove bandwith, naime nije toliko bitno koliko će se podataka transferovati unutar hosting servera već koliko će hosting ukupno preneti podataka napolje, na internet, tu mislim na gabarite html-a i slika.

Broj querija? Viđao sam skripte i sa po 30-40 querija. Ako se tvoj skript završi u nekom normalnom vremenu (manje od sekund na hosting serveru, ne na ovom tvom PII), onda je i 30-40 dozvoljeno. Naravno samo ako ne pozivaš ponovo posle par sekundi, pusti mysql server malo i drugima na .shared hostingu, inače će te stvarno zvati admini.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta29.08.2007. u 15:17 - pre 202 meseci
Da, jasno mi je za bandwith. To je druga da kazemo stavka, i vezana za html, ali sto se kaze bitna.

Hvala ti mVeliki, mislim da sada imam vise hrabrosti da nastavim sa pisanjem skripti, iako su dosta komplikovane. Naravno, vreme izvrsenja je sto se kaze glavni zakon.

Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
*.ptt.yu.

Sajt: www.gvozden.info


+68 Profil

icon Re: Benchmark PHP skripta30.08.2007. u 08:29 - pre 202 meseci
Upravo sam radio na performansama mog frameworka koji je primenjen na 30-tak sajtova.

Medjutim, tek kada sam ga navezao na bazu od 150 MB primeceni su izvesni problemi. Vreme odziva je islo i do 10-tak sekundi.

Postavio sam timer i uporedjivao deo po deo. Skript je razvijan na winXP, apache2, php5, mysql5. Na netu se nalazi na FBSD, apache1.3, php4, mysql5.

Na win-u je odziv bio 3 sec, a na linux-u i do 10.

Posle optimizacije baze i postavljanja pravilnih indeksa baza je na linuxu bila brza od baze na win. Medjutim, vreme izvrsenja je jos uvek bilo veliko na linuxu. Onda sam isao dalje i primetio funkciju strtr koja je obradjivala malo vece blokove. Zamenio sam je sa str_replace i vreme je spalo na 1/2 sekunde.

Ukupno mi je vreme izvrsenja na linuxu manje. E, eto sta znaci optimizacija...
Nisam imao kada da vrsim memery usage testove, ali buduci da je vodjeno racuna o brisanju koriscenih stvari to ne bi trebalo da bude problem. Parametri na serveru su ostajali stabilni.

Inace, skripta izvrsava preko 200 upita u jednom prolazu.
Tu se postavlja pitanje, treba li vise upita ili manji broj upita sa vracenjem veceg bloka rezultata. Ja sam za jedan prolaz gde se generise niz sa ID-ovima, a kasnije foreach prikupljanje ostalih podataka i sukcesivno upisivanje. Smatram da se tako zauzima manje memorije.

 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
213.137.123.*

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta30.08.2007. u 16:13 - pre 202 meseci
agvozdene, tvoj odgovor na ovu temu je dao toliko korisnih informacija. Malo cu prokomentarisati sto znam.

I ja sam primetio da samo jedna lose odabrana php funkcija moze da mnogo oteza izvrsenje skripta. Naravno ona ne mora biti spora samo po sebi, moze da s e desi i da je lose primenjena.

Mene posebno interesuje optimizacija baze o kojoj si pricao. Jer kao sto vidim i to je doprinelo veoma mnogo poboljsanju rezultata. A voleo bih da postavis ti temu o ovome i to sa primerima losih odabira indeksa i optimizaciji istih... i svemu onome sto je vezano za optimizaciju.

Zaista sam impresioniran da ljudi koriste tako mnogo upita u jednom prolazu (200).

Takodje mi je vrlo interesantna konstatacija da je bolje vrsiti vise upita nego jedan veliki. To je za mene pravo otkrice. Mislio sam da je poenta u smanjenju upita. A php kod da sredjuje stari. medjutim to cesto komplikuje stvar...
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Benchmark PHP skripta30.08.2007. u 17:13 - pre 202 meseci
Svojevremeno je i mene ovo zanimalo (jedan veći ili više manjih upita) pa sam napravio test skriptu da proverim.

Imao sam tabelu sa oko 300 redova od prosečno 200 bajtova podataka po redu.
Prvi skript je prvo očitao ID-ove iz autoincrement kolone (select id from testtable) pa ih pojedinačno cele čitao (select * from testtable where id=$id), a drugi skript je sve čitao (select * from testtable).

Izmerio sam da je vreme potrebno za drugi pristup taman koliko je prvi stigao da uradi 4-5 pojedniačnih querija.
Znači izvršavanje querija odnosi većinu vremena dok je fetch zanemarljiv.
Testirano na Win/php4/mysql4 platformi.

Od tada kod tabela sa redovima kraćih od recimo 1kb uvek pročitam sve pa onda odbacim eventualno viškove. Naravno ako mogu sa WHERE profiltrirati to svakako dodam queriju.

Ima li drugih iskustava?
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta30.08.2007. u 19:14 - pre 202 meseci
mVeliki, znaci da je po tvom testu izvrsenje jednog upita bilo brze za oko ako se ne varam 60-70 puta od izvrsenja pojedinacnih upita u toj tabeli od 300 redova.

Moze se reci da je to zaista velika razlika. To ide u prilog onome da se ipak vrsi izvrsenje sa sto manje querija. Ali interesanto je sto je pomenuo agvozden: Baza od 150MB, skript sa 200 upita, a vreme izvrsenja samo oko 0,5 sec.

Mozda ce neko navesti svoja iskustva u vezi sa ovim. Cim budem imao neke konkretne podatke, nadam se da cu ih dati.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Benchmark PHP skripta30.08.2007. u 20:23 - pre 202 meseci
Tada, u to vreme kad sam i ja bio početnik, nisam nigde na netu našao odgovor na ovu temu, pa sam zato sam napravio test. Možda se od tada situacija promenila dolaskom novijih verzija servera.

Dok čekamo tuđa iskustva napravi sam sličan test, izmeri microtime funkcijom pa podeli s nama, ako ništa drugo - zanimaće buduće početnike.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Re: Benchmark PHP skripta30.08.2007. u 22:03 - pre 202 meseci
Evo, bas zavrsih testiranje dva (redizajnirana) skripta, koja mi na razlicite nacine resavaju zadatak zbog koga sam i postavio pitanje i ovu temu.
Po mom misljenju rezultat je vrlo interesantan.

Prvi skript izvrsava jedan upit, a drugi izvrsava 21 upit (1 koji uzima primarni kljuc iz jedne tabele, i ostali koji vrse upite po tim primarnim kljucevima).

Posto je samo selektovanje ruzultata malo komplikovano (ne puno), i sam pristup selektovanju rezultata u ova dva skripta je razlicit, nadam se ne previse. Prvi skript povlaci 300 redova za obradu jednim upitom. Kod drugog skripta prvi upit koji vesi selektovanje primarnih kljuceva i povlaci 20 redova; Svaki od sledecih 20 upita povlaci po 3 reda za svaki dobijeni primarni kljuc, tako da drugi skript ukupno povlaci 80 redova iz baze sa 21 upitom.

(Vidi se da sam sa skriptom sa vise upita dobio 'cisteje' podatke, sto mi je i bio posebno naglasen cilj.)

Ono sto je zanimljivo i najbitnije ovde jeste vreme izvrsenja prvog i drugog skripta. Situacija je sledeca:

Vreme izvrsenja i za prvi i za drugi skript je ISTO!: oko 0,53 sekunde.


Moj cilj je bio da dobijem sto cistije podatke iz baze, jer je selektovanje bilo malo problematicno. Cistije podatke mi je omogucio metod sa vise querija. Sto me posebno raduje i cudi, selektovanje sa vise querija nije dodatno opteretilo racunar, vec je vreme izvrsenja ostalo isto.

Po ovome sto je rekao mVeliki i agvozden i sto sam ja dobio, izgleda da se situacija razlikuje od slucaja do slucaja, pa bi po mom misljenju, svako, kome je bitno vreme izvrsenja, trebao da sam testira obe metode na svom primeru.

Moj test je bio na WIN,PHP4,MySQL5.

Mnogo hvala mVelikom i agvozdenu na pomoci!
Svako dobro!
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Skaarj
Novi Sad

Član broj: 21463
Poruke: 365
91.150.98.*



+3 Profil

icon Re: Benchmark PHP skripta30.08.2007. u 23:43 - pre 202 meseci
Ako hocete performanse i pravite aplikaciju koja moze da se skalira onda minimizujete broj upita. Kod opterecenih aplikacija baza je uvek usko grlo ne PHP ili vec koji drugi jezik (naravno ako se izuzmu kardinalne greske u programiranju).

Za dobre performanse potrebno je prvo dobro osmisliti bazu da bi smanjili broj potrebnih upita.
 
Odgovor na temu

[es] :: PHP :: Benchmark PHP skripta

[ Pregleda: 3041 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.