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

  • fireflame65

    fireflame65

    27 Mart 2007
  • olinerd

    olinerd

    23 AĞUSTOS 2007
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011