Visual Studio C#'ta liste kutusuna çok veri aktarınca yavaşlıyor ve bir süre sonra donuyor

Parca parca islerken kontrol etmis olmuyor musun zaten? Bu dedigin hepsini neden tek seferde memory e doldurdugunu aciklamiyor.
5.000'er 5.000'er yapmak olayı yeterince açıklıyor. Milyonlarca log satırı varken nasıl azar azar denetleme yapayım? Bu dediğin yöntem uzun sürer.
 
5.000'er 5.000'er yapmak olayı yeterince açıklıyor. Milyonlarca log satırı varken nasıl azar azar denetleme yapayım? Bu dediğin yöntem uzun sürer.

"Denetleme" dedigin nedir? Ne yapiyorsun mesela da 5000 lik partition yapmanin performansindan endise duyuyorsun?
 
"Denetleme" dedigin nedir? Ne yapiyorsun mesela da 5000 lik partition yapmanin performansindan endise duyuyorsun?
Örneğin bir dosyada 1 milyon satır olsun. 5.000'er satır olarak kontrol etmek uzun sürer.

Bu satırlar SQL kodları içeriyor. Bu kodları alıp yazılımda test ediyorum. Eğer hata var ise kodu düzeltiyorum.
 
Doğrudan sorun çıkaran şeyi çözmek yerine o sorunu manuel olarak çözüyorsun orada da süreçle ilgili başka bir sorun yaşıyorsun. Hayretler içerisindeyim.
Tabii ki sistemi otomatikleştirdim ama yine de bir yerde problem oluşabiliyor. Örneğin düzenli ifadelerle kesme işareti gibi hataları önledim. Bunun dışında görünmeyen karakterler var. Bu karakterleri düzenli ifade ile engelleyemediğim için elle denetlemek zorunda kalıyoruz.
 
Örneğin bir dosyada 1 milyon satır olsun. 5.000'er satır olarak kontrol etmek uzun sürer.

Bu satırlar SQL kodları içeriyor. Bu kodları alıp yazılımda test ediyorum. Eğer hata var ise kodu düzeltiyorum.
1 milyon satırı aynı anda kontrol etmenin daha kısa olduğunu sana kim söyledi ki? Zaten iterasyon usulü çalışıyor. Bir seferde veriyi memorye yükleyip içinde itere edeceğine, 5000 veriyi yükle onun içinde itere et. Sonuçta hala karakter kontrolü yapıyorsun. Multithreading kullan.

4 thread ile bu işi neredeyse 4te bir süreye düşürürsün. Tek bir iterasyon yerine paralel iterasyon ile lineer search çoook daha mantıklı.

Veriyi chunklar halinde alıp tekrar 4 chunka bölebilirsin. Yada 0dan başlayıp 5er 5er attlattığın bir lineer search denersin. 0-5-10, 1-6-11, 2-7-12, 3-8-13, 4-9-14... İkinci söylediğimde exception beklemen lazım. Eğer thread veri limiti dışına çıkarsa hata alacaksın çünkü.

 
1 milyon satırı aynı anda kontrol etmenin daha kısa olduğunu sana kim söyledi ki?
Tecrübe konuşuyor. Elle kontrol ediyorum. Verileri alıp diğer yazılıma eklemek otomatik yapılmıyor. 5.000'er biçiminde olduğunda 1 milyonu anında aktarmaya göre daha uzun sürecektir.
 

Technopat Haberler

Geri
Yukarı