Yeni Cevap 
 
Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Str.=String kullanımında dikkat edilecek hususlar
Yazar Mesaj
duzgun Çevrimdışı
Hizmetinizde
*******

Mesajlar: 2,322
Katılım: Jul 2008
Rep Puanı: 17
Mesaj: #1
Str.=String kullanımında dikkat edilecek hususlar
php ve diğer dillerde kullanılabilen
PHP Kod:
$string "ABC";
$string .= "DEF";
$string .= "GHI";
$string .= "JKL";
$string .= "MNO";
$string .= "PRS";
$string .= "TUV";
$string .= "YZX"
Bellek kullanımı açısından bunun
kötü bir programlama yöntemi olduğunu C/C++'ye
aşına olanlar bilir.

yukarıdaki örneğin bellek işgali şu şekilde olacaktır.
PHP Kod:
$string "ABC"
/
$string 3 bytelık veridir
$string .= "DEF";
//bir önceki 3 byte bellekte yer işgaliyle başbaşa bırakılır ve
//6 byte lık ABCDEF $string değişkenine atanır. bir önceki 3 byte
//bellekte bulunduğundan bellekte bu iki işlemde toplam 9 byte yer
//işgal edilir.
$string .= "GHI"// 3 + 6 + (6+3) = 18 byte.
$string .= "JKL"// 18 + (3*4) = 30 byte.
$string .= "MNO"// 30 + (3*5) = 45 byte.
$string .= "PRS"// 45 + (3*6) = 63 byte. 
$string .= "TUV"// 63 + (3*7) = 84 byte.
$string .= "YZX"// 84 + (3*8) = 108 byte. 
normalde
PHP Kod:
$string "ABCDEFGHIJKLMNOPRSTUVYZX"// 24 bytelık veri 

PHP Kod:
$Array[] = "ABC";
$Array[] = "DEF";
$Array[] = "GHI";
$Array[] = "JKL";
$Array[] = "MNO";
$Array[] = "PRS";
$Array[] = "TUV";
$Array[] = "YZX"// 24 byte

join('',$Array//  24 byte

// toplam 48 byte 


string değişkeindeki ve arraydaki Pointer leri işin içine katmadım.
Ayrıntılar dışında basit bir mantıkla açıklamaya çalıştım.

$string .= kullanımında dikkat etmek lazım.

$string .= kullanmayın demiyorum kullanın fakat
belleği çok şişirecek durumlarda kullanmaktan çekinin

script timeout u artırıp memory out a neden olduğu durumlarla karşılaşabilirsiniz.

sadece php değil bütün dillerde bu şekildedir.
16-07-2008 15:10
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
Yeni Cevap 


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi