2 Şubat 2012 Perşembe

ConcurrentHashMap - Concurrency Level

Merhaba,

Çok thread'li uygulamalarda sıkça kullandığımız java.util.concurrent.ConcurrentHashMap sınıfının concurrencyLevel diye, default değeri 16 olan bir değişkeni mevcut. (Detaylar için bknz: http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html)

Yük testi yaparken yoğun olarak kullanılan bir HashMap'te saniye mertebesine uzayan update ve get işlemleri görünce araştırma gereği hissettim. Şayet 1 thread'in yazacağı, diğerlerinin sadece okuyacağı bir map ise bu değerin constructor'da 1 verilmesi tavsiye ediliyor.

Gereğinden büyük bir değer verilmesi zaman kaybına ve gereksiz memory kullanımına yol açıyor. İdeal değerini optimize ederek geliştirilen uygulamaya yönelik olarak seçmek gerekiyor.

Yaptığım testlerde bizim uygulama alanımız için bu değerin 100 olmasına karar verdim. Okuma - yazma sürelerimiz olması gerektiği gibi milisaniye mertebelerine düştü. Hatta tüm akışta yük altında her istek için 2-3 saniye kazancımız olduğunu söyleyebilirim. 

Etkili bir iyileştirme oldu !



Android Phone Storage - Sabit hafıza boyutu

Merhaba, 

Uzun bir aradan sonra arkadaşımın düzenli yazdığı blogu görünce yazasım geldi. 

Şirketimiz çalışanlarına HTC Wildfire S cihazı dağıttı. (Spesifikasyonlarına gsmarena'dan bakabilirsiniz: http://www.gsmarena.com/htc_wildfire_s-3777.php)  Akıllı telefonların hızla büyüdüğü, kocaman olduğu, cebe avuca sığmadığı günümüzde küçük, pratik ve şık bir cihaz olmasından dolayı ilk başta epey hoşuma gittiğini itiraf etmeliyim. Ancak ucuz etin yahnisi misali kullandıkça büyük eksiklikleri olduğunu farkettim. Cihazın kullanıcının kullanımına açtığı dahili hafızası 418 MB. Bununda büyük kısmı işletim sistemi dosyaları, HTC'nin önyüklü olarak gelen ve kaldırılamayan uygulamaları vs gibi şeylerle dolu durumda. Dolayısıyla kullanıcıya kalan yaklaşık 100 MB alan mevcut. 

Severek kullandığım, önceki telefonumda tanıştığım navigasyon uygulaması iGo'yu, çok gerekli olduğunu düşündüğüm QuickOffice'i kurunca bana çok çok az alan kaldı. Cihazda toplam indirilip kurulmuş uygulama sayısı sadece 16. Cihazın hafıza kartına taşımaya izin verdiği uygulamaları zaten taşıdım, kullanıcı dosyalarını temizledim, yinede bana kalan alan 15.8 MB. Bunuda kullanamıyorum zira Android platformunda internal memory flash olduğu için ram olarakta kullanılıyor. Daha da azaltırsam cihaz kasılmaya başlıyor.

Velhasılı kelam akıllı olmasını uygulama potansiyeline borçlu olan telefonuma çok sağlam kriterlerle seçmek zorunda kaldığım, 5 tanesi oyun olmak üzere toplam sadece 16 uygulama kurabilmek epey gücüme gitti !

Biraz araştırınca piyasadaki birçok cihazın dahili hafızasının 1 GB bile olmadığını gördüm. Android platformu için elzem olan dahili hafıza'yı üreticilerin büyük maliyet olarak görüp cihazlara 160 MB, 280 MB, 512 MB gibi komik boyutlarda donanımlar koyması saçma.

Özetle Android işletim sistemli bir telefon alırken işlemcisinin yanında özellikle dahili hafıza boyutuna bakılmasını, en azından 1-2 GB olanlarının satın alınmasını tavsiye ediyorum.