September 26, 2018

Selamlar,

Projemde gerçek zamanlı olarak geçmiş 15 dakikalık data saklamak durumundayım. 15 dakikadan öncekileri listemin başından çıkarıyorum.

Bu nedenle DList kullanıyorum. Sona ekleyip baştan çıkarıyorum.

Şimdi bu ~1000 elemanlık DList'de bir arama yapmam gerekiyor. Acaba bunun maliyetini tahmin edebiliyormusunuz böyle bir ölçüm daha önce yaptınız mı ?

Ben ölçücem burayada eklerim ama yinede başlık açmak istedim.

Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 27, 2018

Eğer DList adından anlaşıldığı gibi bağlı liste kullanıyorsa (hiç bilmiyorum) ve sıralı arama nedeniyle belleğin rasgele yerlerine erişeceksen CPU'nun ara bellek (cache) performansı kötü olacaktır. O yüzden sıralı arama gerektiğinde dizi bu açıdan çok iyidir. (CPU ara bellekleri bellekte ileriye veya geriye doğru ilerlemeye göre ayarlanmıştır.)

Bence burada en uygun veri yapısı circular buffer'dır. Bellek alıp verme de gerekmeyeceğinden o konuda da performans kaybı olmaz.

Eğer bu veri yapısına yazan ve okuyan birden fazla iş parçacığı (thread) varsa sınırda erişimi denetlemek için bir kilit düzeneği kullanmak gerekir. "multi threaded circular buffer" diye arayabilirsin.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]