CodeIgniter Benchmarking Sınıfı
Merhabalar yazı dizimizin bu bölümünde Bechmarking (karşılaştırma ya da test) sınıfımız ile CI de neler yapabileceğimize bir bakacağız.
Bilindiği gibi CI de kullanıma hazır birçok sınıf bulunmakta ve biz bu sınıfları kullanmak istediğimizde ilgili sınıfı şu şekilde çağırırız;
$this->load->library('sinif_adi')
Ancak CI geliştiricileri benchmark sınıfını autoload sınıflar arasına alarak sistemin temeline bütünleştirmişlerdir.
Sınıfımız kabaca şu işe yarar. Belirlediğimiz kontrol noktaları arasındaki performans ölçülerini milisaniye cinsinden bize değer olarak sunarlar. Biz de bu sayede örneğin bir foreach bloğumuzun yada bir sql cümleciğimizin ne kadar sürede işlendiğini test edebiliriz. Bu da daha performanslı uygulamalar geliştirmemize yardımcı olur. Benchmark classını uygulamamızda istediğimiz herhangi bir noktada kullanarak kontrol noktalarımızı istediğimiz gibi işaretleyebiliriz. (modeller, controllerlar, viewlar, hepler lar 3.parti kütüphaneler v.s.) İşaretleme için istediginiz herhan gibi bir ismi kullanabiliriz tabi ki Türkçe karakter kullanmadan ![]()
Benchmark sınıfının kullanılması:
1. Test başlangıç noktası işaretlenir.
2. Test bitiş noktası işaretlenir.
3. View tarafında elapsed_time() metodu kullanılarak sonuç ekrana yazılır.
$this->benchmark->mark('test1'); // bir takım kod blokları $this->benchmark->mark('test2'); // başka bir takım kod blokları $this->benchmark->mark('test3'); // daha başka bir takım kod blokları echo “Test1 Test2 arası süre: ”.$this->benchmark->elapsed_time('test1’, 'test2’).“"; echo “Test1 Test3 arası süre: ”.$this->benchmark->elapsed_time('test1’, 'test3’).“"; echo “Test2 Test3 arası süre: ”.$this->benchmark->elapsed_time('test2’, 'test3’); /* HTML Cıktı şu şekilde olacaktır: Test1 Test2 arası süre: xxx Test1 Test3 arası süre: xxx Test2 Test3 arası süre: xxx */
Uygulama profilinde test noktaları oluşturma:
CI uygulamanızı profilleyerek kontrol noktalarınızı daha rahat izlemenize olanak sağlar. Bu konu ile ilgili daha detaylı bilgi için CI kullanıcı klavuzundaki Profiler methodunu inceleyiniz. Ancak yeri gelmişken ben de burada hemen olaya değineyim.
Profilleme özelliğini kullanmak:
CI nin profil methodunu uygulamanızda aktive ettiğinizde CI sizin icin uygulamanızdaki test noktalarınızın sürelerini, SQL sorgu cümleciklerinizi, $_POST veya $_GET ile aldığınız form değişkenlerinizi, URI de bulunan string değeri derler ve output classı aracılığı ile view katmanınızın en alt noktasında uygulamanızın cıktısına ekleyerek ekrana sonuçları düzenli bir şekilde basar. Bu method da CI de otomatik olarak yüklenmiş Output Class ına dahil bir methodtur ve tekrar yüklenemize gerek yoktur.
Ozelliği aktıve etmek
Profil seceneğini aktive etmek icin yapmamız gereken output sınıfının enable_profiler() methoduna TRUE parametresini geçerek herhangi bir controller sınıfınızın ılgılı methodunda çağırmaktır.
$this->output->enable_profiler(TRUE);
Ozelliği pasive etmek
Profilleme işiniz bittiğinde daha önce kullanmış oldugunuz controler sınıfının ilgili methodundaki. enable_profiler() methoduna bu sefer FALSE olarak parametre geçerek çağırıyoruz.
$this->output->enable_profiler(FALSE);
Kontrol noktaları oluşturmak
Eger uygulamanızı profilleyerek test ediyorsanız profil cıktısında hesaplanan notkarı duzenli olarak gormek ısteyebılırsınız. Bunun için Benchmark sınıfını işaretlerken herkangi bir isim vermek yerine sonlarına _start ve _end subfix leri ekleyerek isimlendirmeliyiz.
Örneğin;
$this->benchmark->mark('test1_start'); // bir takım kod blokları $this->benchmark->mark('test1_end'); $this->benchmark->mark('test2_start'); // bir takım kod blokları $this->benchmark->mark('test2_end');
Bu şekilde işratlenmiş test noktaları profilleme çıktısı sayfaya yazdırıldıgında Test ve Test1 şeklinde listelenerek süreleri tablonun karşısında yazılacaktır. Örnek ekran çıktısı aşağıdaki gibidir.

Toplam uygulama çalışma süresini görüntüleme:
Codeingiterin ateşlemeye başlamasından output u üterip tarayıcınıza çıktıyı göndereceği süreye kadar geçen hesaplanmış süreyi görmek isterseniz aşağıdaki metodu kullanmanız gerekecektir.
echo $this->benchmark->elapsed_time();
Ayrıca alternatif olarak direkt php tagları kullanmadan view katmanınıza aşağıdaki satırı da yazarak aynı çıktıyı elde edebilirsiniz
{elapsed_time}
Not: Bu kullanım tema motorlarındaki süslü parantez icine yazılan kalıplara benzer ve cıktı üretimi sırasında ayrıştırılarak (parse) HTML den ayrıştırılır.
Bellek tüketimini görüntüleme
Eger php ini dosyanızda –enable-memory-limit parametresi ayarlanmıs ise uygulamanızın o an için sunucu belleğinde ne kadar yer kapladığını CI size gösterebilir.
Kullanımı ise şu şekildedir;
echo $this->benchmark->memory_usage();
Ve şu şekilde;
{memory_usage}
Evet simdilik bu konu ile ilgili anlatacaklarım bukadar. Umarım çalışmalarınıza bir katkısı olacaktır. Başka bir yazımda görüşmek üzere sevgilerimle…

Web geliştirici, yazılım geliştirici, grafik tasarımcı ve tam bir codeigniter aşığı olduğum söylenebilir. Tüm bunların yanında müziği, doğayı ve gezmeyi çok severim. Son olarak ailesine ve değerlerine bağlı girişimci bir Türk genciyimdir…


