Array vs Object (Dizilere Karşı Nesneler)

PHP ile kod geliştirenlerin nesneleri veri tutmak amaçlı kullanma alışkanlığı olduğunu sanmıyorum.  PHP zengin kullanım şekilleri olan bir dil olduğundan kimisi nesne tabanlı, kimisi fonksiyonlar aracılığı ile kod yazarken kimisi de fonksiyon dahi kullanmadan tamamen düz metin gibi yazıyor :) Hepsini bir kenara atalım. Fonksiyonlar metodlar vs. vs. değil de biz bu nesneleri neden C dilindeki struct gibi bilgi tutmak amaçlı kullanmayalım ki?


Sınıfımızı ilk sayfada vermiştik ama sınıfımızı hatta bir de boyut fonksiyonumuzu tekrar yazıp hatırlayalım.

PHP kodu
  1. class iletiler {
  2. public $isim;
  3. public $ileti;
  4. }
  5. function boyut($byte) {
  6. $birim=floor(log($byte,1024));
  7. $birimler=array('byte','KB','MB');
  8.  
  9. $birim_boyutu=pow(1024,$birim);
  10. return $byte/$birim_boyutu.' '.$birimler[$birim];
  11. }

Şimdi ilk örneğimizi nesne ile yapmaya başlayalım.

PHP kodu
  1. $bellek=memory_get_usage();
  2. $seyranli= new iletiler;
  3. $seyranli->isim='Gündüz Can YILMAZ';
  4. $seyranli->ileti=str_repeat('-Maşallah-',41000);
  5. echo 'seyranli nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  6.  
  7. $bellek=memory_get_usage();
  8.  
  9. $paradox= new iletiler;
  10. $paradox->isim='Gündüz Can YILMAZ';
  11. $paradox->ileti=str_repeat('-Maşallah-',41000);
  12. echo 'murat nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  13. $bellek=memory_get_usage();
  14.  
  15.  
  16. $agakin= new iletiler;
  17. $agakin->isim='Gündüz Can YILMAZ';
  18. $agakin->ileti=str_repeat('-Maşallah-',41000);
  19. echo 'agakin nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  20. $bellek=memory_get_usage();
  21.  
  22.  
  23. $cagonni= new iletiler;
  24. $cagonni->isim='Gündüz Can YILMAZ';
  25. $cagonni->ileti=str_repeat('-Maşallah-',41000);
  26. echo 'cagonni nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  27.  
  28. echo 'Kullanılan en yüksek alan: '.boyut(memory_get_peak_usage());

olan kodumuzun çıktısı şu şekilde

ÇIKTI kodu
    seyranli nesne boyutu: 400.8828125 KB murat nesne boyutu: 400.796875 KB agakin nesne boyutu: 400.796875 KB cagonni nesne boyutu: 400.796875 KB Kullanılan en yüksek alan: 3.4493179321289 MB

Gördüğünüz gibi nesne ya da dizi bu örnek için pek bişey farketmedi. Tüm değerler birbirine çok yakın. Çalışma süreleri dahi hemen hemen aynı. Bu örnek de 0.907 saniye ile 1.34 saniyeler arasında değerlerde çalıştı sayfa yenilemelerimde.

Hemen ikinci örneğime geçiyorum, bu örnekte nesne içindeki değişkenlere $masallah değişkeni atayacağız.

PHP kodu
  1. $bellek=memory_get_usage();
  2. $masallah=str_repeat('-Maşallah-',41000);
  3. echo 'maşallah string boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  4.  
  5. $bellek=memory_get_usage();
  6. $seyranli= new iletiler;
  7. $seyranli->isim='Gündüz Can YILMAZ';
  8. $seyranli->ileti=$masallah;
  9. echo 'seyranli nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  10.  
  11. $bellek=memory_get_usage();
  12.  
  13. $paradox= new iletiler;
  14. $paradox->isim='Gündüz Can YILMAZ';
  15. $paradox->ileti=$masallah;
  16. echo 'murat nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  17. $bellek=memory_get_usage();
  18.  
  19.  
  20. $agakin= new iletiler;
  21. $agakin->isim='Gündüz Can YILMAZ';
  22. $agakin->ileti=$masallah;
  23. echo 'agakin nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  24. $bellek=memory_get_usage();
  25.  
  26.  
  27. $cagonni= new iletiler;
  28. $cagonni->isim='Gündüz Can YILMAZ';
  29. $cagonni->ileti=$masallah;
  30. echo 'cagonni nesne boyutu: '.boyut(memory_get_usage()-$bellek).'<br />';
  31.  
  32. echo 'Kullanılan en yüksek alan: '.boyut(memory_get_peak_usage());

Bu program 0.0398 saniyerde çalışırken çıktısı ise aşağıdaki şekilde oluyor

ÇIKTI kodu
    maşallah string boyutu: 400.578125 KB seyranli nesne boyutu: 368 byte murat nesne boyutu: 368 byte agakin nesne boyutu: 368 byte cagonni nesne boyutu: 368 byte Kullanılan en yüksek alan: 2.2750778198242 MB

Gördüğünüz gibi burada da değişen çok fazla şey yok. Malesef taraf tutanların pek kazandığı söylenemez. Nesneler şu örnekler açısından bakıldığında dizilere karşı çok avantajlı olmasa da, aynı şekilde kodlamaktan sıkılanlar için, hep aynı şeylerle kendini geliştiremeyeceğini düşünenler için, artık bi ucundan tutup ben de nesne tabanlı programlamaya başlayım diyenler için pratik olabilir. Zaten amacım birinden birini seçtirmek değil farklı yollar gösterebilmekti.

İyi kodlamalar ;)

1 2 3 4


Array vs Object (Dizilere Karşı Nesneler) Oy Sayısı: 21 Puan: 8.95/ 10.00

Etiketler

nesnelerin boyutu , objects array php , php dizi yerine nesne , agakin , php dizi boyutu ,

Fatma22 Temmuz 2010 Perşembe 01:19:42


Bir programcı olarak ikilem yaşadığım bir durumdu :) ancak bu denli ölçümler yapmaya üşenmiştim doğrusu. Bana göre dizilerin yapısı daha kolay. Nesne tabanlı programlamayı sadece "Bugün değişik bir şey yapmalıyım" dediğimde kullanıyorum. Sizin de dediğiniz gibi: sadece sıkılınca :)
Verdiğiniz bilgiler için teşekkür ederim, başarılar dilerim.




Yorumunuz