MultiServis.Net //PHP El Kitabı

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>

PHP ve Benchmarking Testleri - BOLUM 2 Yazar: Serkan Tarih: 01/03/02

Problem : Belirli bir kod parcasi uzerinde benchmark islemi gerceklestirmek,ve kodunuzun ne kadar hizli calistigini gormek istiyorsunuz.

Cozum : microtime () fonksiyonu yardimiyla, islem icin gecen saniye ve milisaniyeleri hesaplayabilirsiniz.

> <?php
> function microzamani_hesapla ()

> > {
> > $m_zaman = microtime();
> > $m_zaman = explode (" ",$m_zaman);
> > $m_zaman = doubleval ($m_zaman[1]) + doubleval ($m_zaman[0]);
> > return ($m_zaman);
> > }

> $zaman1 = microzamani_hesapla ();

> for ($i=0; $i<99999; $i++) {

> > $ar[] = $i;

> }

> $zaman2 = microzamani_hesapla ();

> $fark = abs ($zaman2-$zaman1);

> print "<BR> For Dongusu: $fark saniye icinde tamamlandi.n";

> $i = 0;
> unset ($ar);

> $zaman1 = microzamani_hesapla ();

> while ($i<99999) {

> > $ar[] = $i;
> > $i++;

> }
> $zaman2 = microzamani_hesapla ();
> $fark = abs ($zaman2-$zaman1);
> print "<BR>While Dongusu : $fark saniye icerisinde tamamlandi.n";
> ?>

http://www.turk-php.com/ornekler/bench_for_while.php

http://www.turk-php.com/ornekler/bench_for_while.phps

Tartisma : Yukaridaki ornekte ayni islemi gerceklestirmek icin for ve while donguleri kullanilmaktadir.Bu iki islem icin gecen sureler hesaplanmak ta ve karsilastirilmaktadir.

Bu cozum asagidaki sekilde kullanildiginda kendi programlarinizda belirli bir islem icin gecen sureyi kullanicilariniza gosterme firsatina sahip olacaksiniz:

<?php
$zaman1 = microzamani_hesapla ();

//Bundan sonraki kisimda istediginiz islevi yerine getiren kendi kodlariniz yer aliyor.

$zaman2 = microzamani_hesapla ();

$fark = abs ($zaman2 - $zaman1);

Bu makalade kendi yazdigimiz microzamani_hesapla () fonksiyonunu kullandik.Bunun sebebi microtime () yapisal hazir fonksiyonu'nun sonucu saniye ve milisaniye olarak (aralarinda bir bosluk yer aliyor) string seklinde dondurmesi. Biz kendi yazdigimiz fonksiyonda bu ham veriyi bir "sayi" veritipine donusturduk hemde aralarindaki boslugu kaldirarak bu saniye ve milisaniye sayilarini birbiri ile toplayip tek bir deger elde ettik.

microtime () fonksiyonu saniye ve milisaniyeleri UNIX zamanini ( Daha cok bilinen adiyla "epoch saniyeleri" Ocak,1,1970 ten o ana kadar gecen saniyeleri saymaktadir.) kullanmaktadir.

Daha gelismis cozumler

Bu karsilastirma ve gecen zamani hesaplama islemleri ile cok fazla ilgileniyorsaniz PHP e-posta listesine gonderilen asagidaki sinifi inceleyip,ozgurce kullanabilirsiniz.(Yayinci kisinin kimligi bilinmiyor veya yazan kisi isimsiz kalmak istemis.)

http://www.turk-php.com/ornekler/benchmarking.class.phps

ornek bir kullanim gormek isterseniz,

http://www.turk-php.com/ornekler/benchmarking_ornek.phps

http://www.turk-php.com/ornekler/benchmarking_ornek_ciktisi.php

Not: PHP mail listesinde uzun aramalardan sonra burada adi gecen kucuk "class" dosyasini kimin gonderdigini buldum hehe :)

Ilgilenenler bakabilirler :
http://marc.theaimsgroup.com/?l=php-general&m=98285816806488&w=2

Serkan Hadi Ceylani
Kaynak : ISBN 0-672-31924-1
serkan@turk-php.com

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>