SORU
14 HAZİRAN 2010, PAZARTESİ


Ne'in (gizli) maliyet'In lazy val?Scala

Scala bir kullanışlı özelliği val bir değerlendirme Gerekli (ilk giriş) kadar gecikmeli olduğu lazy val.

Elbette, bir lazy val olmalı biraz havai bir yere Scala gerekir devam ettirmenin değeri olmadığını zaten değerlendirilmiş ve değerlendirme senkronize olmalı, çünkü birden çok iş parçacığı olabilir denemek değere erişmek için ilk kez aynı anda.

Tam olarak ne maliyeti lazy val - orada gizli bir boolean bayrak ile ilgili bir lazy val kaydını tutmak, eğer var değerlendirildiği ya da değil, tam olarak ne olduğunu senkronize ve herhangi bir daha fazla maliyeti?

Buna ek olarak, bunu yapmak sanırım:

class Something {
    lazy val (x, y) = { ... }
}

Bu lazy valiki ayrı s ile aynıdır x y ya da yükü sadece bir kez, 12 ** çift alabilirim?

CEVAP
15 HAZİRAN 2010, Salı


Bu scala mailing list alınır ve Java kod (Java değil) açısından lazy uygulama ayrıntıları verir:

class LazyTest {
  lazy val msg = "Lazy"
}

bir şeyler aşağıdaki Java kodu eşdeğeri için derlendi:

class LazyTest {
  public int bitmap$0;
  private String msg;

  public String msg() {
    if ((bitmap$0 & 1) == 0) {
        synchronized (this) {
            if ((bitmap$0 & 1) == 0) {
                synchronized (this) {
                    msg = "Lazy";
                }
            }
            bitmap$0 = bitmap$0 | 1;
        }
    }
    return msg;
  }

}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • Major FX

    Major FX

    6 HAZİRAN 2012