Geschwindigkeit von JNI



  • Hallo,

    ich möchte gerne Echtzeitberechnungen in einer DLL diese Werte per JNI aufrufen und per BufferedImage darstellen und brauche nun Rat von den Profis hier. Wie gut ist die Performance von JNI-Aufrufen im Vergleich wenn ich sie direkt in C oder C++ aufrufen würde?

    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?



  • versuch's woanders, Troll.



  • Ähm ja, vielen Danke für die Hilfe.



  • 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


Anmelden zum Antworten