SORU
4 Mart 2009, ÇARŞAMBA


ThreadLocal değişkeninin performans

Ne kadar ThreadLocal değişken normal alandan daha yavaş okunur?

Daha somut bir biçimde basit nesne oluşturma daha hızlı ya da daha yavaş ThreadLocal değişken girmek daha mı?

Ben ThreadLocal<MessageDigest> örnek olması çok daha hızlı MessageDigest örnek her zaman yaratıyor, böylece yeterince hızlı olduğunu varsayalım. Ama aynı zamanda, örneğin byte[10] ya da byte[1000] için de geçerli mi?

Edit: Soru gerçekten ThreadLocal's? çağrılırken olan bir şey. Eğer sadece bir alan ise, diğerleri gibi, o zaman cevap "her zaman en hızlı", değil mi?

CEVAP
4 Mart 2009, ÇARŞAMBA


Modern Jvm'ler uygulamak ThreadLocal İplik unsynchronised bir HashMap kullanarak.() currentThread nesne. Bu oldukça hızlı bir şekilde (sanki hızlı düzenli bir alan erişim kullanarak, tabii ki değil, yaklaşık olarak ThreadLocal nesne İplik öldüğünde toparladım alır sağlayarak yapar.

Tabii ki, yeni Nesne de çok hızlı bu günlerde, Çöp Toplayıcıları da kısa ömürlü nesneler geri ödemelerine de çok iyi.

Sürece emin nesne oluşturma olacak pahalı, ya da ihtiyaç için ısrar bazı devlet üzerinde bir iş parçacığı tarafından iplik olarak, size daha iyi için basit ayırmak gerektiğinde çözüm, ve sadece geçiş için bir ThreadLocal uygulama ne zaman bir profiler size gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008