
Necmettin Begiter wrote:
> 25 February 2008 Monday 10:25:26 tarihinde Bahri Meric CANLI şunları yazmıştı:
>   
>> Merhaba
>>
>> Kod hakkında malesef detaylı bilgi veremiyorum fakat sonu olan bir döngü 
>> (döngü sonsuz döngüye vs girmiyor) içerisinde benzer içerikli sayfaları 
>> parsedip (parsetme işleminin bir bölümününde ereg fonksiyonun 
>> kullanıyorum ) işlenmek üzere veritabanında yada text dosya da saklıyor.
>>
>> Liste bazen bir milyon üzerinde url den oluşabilimekte. Hedef sitelerin 
>> sunucularının yavaşlığı yada fazla yük getirmemek için aralara delay 
>> serpiştirmek de bazen gerekebilmekte. Bu sebeple kodun çalışma süresi de 
>> uzamakta (php-cli ile çalışıyor).
>>
>> Durum kısaca bundan ibaret.
>>     
>
> Basit bir örnek vereyim:
>
> pages = array()
> addresses = array("bir", "iki", "üç", "dört")
> saved = array()
> for (i=0;i++;i<len(addresses))
> 	{
> 	pages[i] = downloadpage(addresses(array))
> 	if ("@" in pages[i])
> 		{
> 		saved.append(array(addresses[i],pages[i]))
> 		}
>
> gibi bir betiğin (araya hafif Python karışmış olabilir;) hafızayı doldurması normaldir, tüm sayfaları hafızada tutmaya çalışıyor. Aynı betiği 
> şöyle yazınca hafıza kullanımı ciddi olarak düşer:
>
> addresses = array("bir", "iki", "üç", "dört")
> saved = array()
> for (i=0;i++;i<len(addresses))
> 	{
> 	ourpage = downloadpage(addresses(array))
> 	if ("@" in ourpage)
> 		{
> 		saved.append(array(addresses[i],ourpage))
> 		}
>
> Burada saved yerine veritabanı veya bir dosya kullanırsanız daha da düşecektir. Sanırım benzeri bir durum var.
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>   
merhaba,
acaba döngü içerisinde bir yerde string birleştirme işlemi yapıyorda onu 
sıfırlamıyor olabilir misiniz?
döngü
    yeni dosya oku
        döngü
           str.=str
        döngü sonu
    dosya işi tamam
döngü sonu
gibi. arkadaşarın yazdıklarına şiddetle katılıyorum. Eğer cok büyük 
dosyaları komple belleğe alıp sonra bellek üzerinde compire, sort vs.. 
yapmıyorsanız o kadar bellek kullanılmasının ancak değişkenlerin 
sıfırlanmaması sonucu oluştuğunu söyleyebilirim.
Daha önce bende milyonlarca satır pars eden uygulamalar yazdım ve php 
ile bir yere kadar, sonrasında algoritmada değişiklik yapmadan C ye 
geçtim dinamik bellek kullanımı vs.. sunucu inanılmaz rahatladı ve 
neredeyse hiç denecek kadar bellek sarfiyatı ile işi götürüyorum şuan. 
daha büyük bir avantaj olarak ciddi derecede hız farkı oluştu o da işin 
cabası :)
php-cli yerine eğer imkanınız varsa betik olmayan bir dil ile yazmanızı 
öneririm.
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Mon 25 Feb 2008 - 10:44:58 EET
