SORU
8 EKİM 2011, CUMARTESİ


JNI aramalar yavaş ne yapar?

Bu '' Java JNI arama yapma yavaş olduğunda. sınırları aşmak biliyorum

Ancak bilmek istiyorumnebunu yavaş yapıyor? Alttaki jvm uygulaması çok yavaş yapar JNI arama yaparken ne yapar?

CEVAP
18 EKİM 2011, Salı


İlk olarak,"," nanosaniye. on alabileceği bir şey konuşurken yavaş belirterek değer 2010 yılında önemsiz yerel yöntemler için, 40 ns benim Windows masaüstü ve 11 ns benim Mac masaüstünde ortalama aramalar ölçtüm. Yapmaya sürecebirçokaramalar, fark edeceksiniz.

Bu, doğal bir yöntem arıyor olabilir " dediyavaşnormal bir Java yöntemi çağrısı yapmak daha. Nedenleri şunlardır:

  • Yerel yöntemleri, JVM tarafından inlined olmayacaktır. Ne de tam zamanında bu özel makine için derlenmiş -- önceden derlenmiş onlar olacak.
  • Java bir dizi yerel kod erişim için kopyalanabilir ve daha sonra geri kopyalanır. Maliyet dizinin boyutu doğrusal olabilir. JNI ölçtümkopyalamabenim Windows üzerinde ortalama 75 mikrosaniye 100.000 bir dizi masaüstü ve Mac 82 mikrosaniye. Neyse ki, doğrudan erişim GetPrimitiveArrayCritical NewDirectByteBuffer yoluyla elde edilebilir.
  • Yöntem bir nesne geçirilir, ya da geri arama yapmak gerekiyorsa, o zaman doğal yöntemi muhtemel JVM için kendi arama yapmak olacaktır. Java alanları erişim, yerel kod yöntemleri ve türleri bir yansıması benzer gerektirir. İmza dizeleri belirtilen ve JVM itibaren sorgulanır. Bu hem yavaşvehata eğilimli.
  • Java Dizeleri nesneleri ve kodlanmış uzunluğu var. Ya da bir dize erişmek oluşturma(n) bir kopyasını isteyebilir.

Bazı ek tartışma, büyük olasılıkla tarihli bulunabilir "Java¿ Platformu Performans: Strateji ve Taktikler", 2000, Steve Wilson ve Jeff Kesselman, bölüm "9.2: İnceleme JNI maliyetleri". this page, @Philip tarafından yapılan yorum altına alınır aşağı yol yaklaşık üçte biri.

2009 IBM developerWorks kağıdı "Best practices for using the Java Native Interface" JNI ile performans tuzaklar kaçınarak bazı öneriler sağlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009