S
goodcooding schrieb:
Ich habe die Frage auch schon im Java-Forum.org gestellt und dort wurde mir gesagt dass es keinen großen Einbrüche in der Geschwindigkeit geben wird. Kann dies hier jemand bestätigen?
Jein. Das kommt drauf an.
Bei extrem einfachen Aufgaben (z.B. 5+3) solltest du das direkt in Java erledigen. Ansonsten kannst du das schon auslagern. Die Frage die sich stellt ist eher, nützt dir die Auslagerung in C/C++ was? Bekommst du einen Performanceschub?
Meistens zahlt sich das Auslagern nur dann aus, wenn man sehr komplexe Aufgaben abarbeitet oder auf SSE-Befehle zurück greift.
Der enstehende Overhead ist mit Sicherheit != 0. Aber recht viel mehr ist es auch nicht. Daher gilt: Wenn du einen deutlichen Geschwindigkeitsunterschied zwischen dem orginalen Java-Code und den neuen Binären-Code messen kannst, dann wird auch nach dem JNI-Aufruf eine ähnliches Ergebnis erziehlt.
Das schöne bei JNI ist, dass du nicht auf C oder C++ angewiesen bist. Du kannst z.B. auch nach Assembler oder Fortran auslagern? Mehr, sie Namensregel auf Oracle's-JNI-Seite.
Gruß,
Thomas