Das ewige Thema Java-Performance



  • SirLant schrieb:

    @Optimizer wenn einmal alles kompiliert wird, was hat dieser JIT-Compiler dann für einen sinn? Ich dachte der kompiliert immer das benötigte und spart sich so Zeit, da er nicht benutzte Teile einfach erst dann kompiliert wenn sie benötigt werden

    Das ist ja auch nicht falsch. Aber wieso folgerst du daraus

    Und wie soll ein Javaprogramm schneller sein als ein kompilliertes Programm? Dazu müsste die JVM entfernt werden und das javaprogramm ebenfalls kompilliert werden, da die JVM ganz einfach auch Zeit braucht welche sie dem Programm nunmal klauen muss.

    ?

    Wenn das Programm einmal als Native Code vorliegt gibt es ja keinen Grund mehr, warum die VM noch ständig Zeit brauchen soll. Die VM compiliert jede Funktion selbstverständlich nur einmal.



  • Also Theoretisch könnte ich mir schon vorstellen, das Bytecode-Sprachen mit JIT (egal ob Java, Net oder was auch immer) schneller sein könnten als C++.

    Der Grund ist einfach, dass die für die Plattform optimieren können, auf der das Programm letztlich ausgeführt wird. Ich bezweifle dass die Masse an C++ Programmen für Pentium4/Athlon 64 optimiert sind... Und wenn ich 'nen Pentium III habe, nützt mir Optimierung für P4 nichts etc. Ein JIT kann genau das umgehen.

    Das Problem dabei ist nur, dass das Compilieren natürlich auch Zeit braucht...



  • Das Problem dabei ist nur, dass das Compilieren natürlich auch Zeit braucht...

    Das ist IMHO nicht das Problem, da es ein einmaliger Vorgang ist.
    Das Problem ist einfach, dass der JIT-Compiler wenig Zeit hat. Verdammt wenig Zeit. Ein statischer Compiler kann 5000 Stunden lang den Kontrollfluss analysieren, dass kann sich ein JIT-Compiler nicht leisten.



  • @Optimizer, ok hste recht normal hat man am Anfang viel und dann tut sich eigentlich nichts mehr, ich hatte so ne Vision im Kopf wo er ewig weiter immer mal wieder was kompilieren muss, aber das stimmt ja nicht so ganz *g*

    net schrieb:

    CarstenJ schrieb:

    Ok, 18 Seiten! 😉

    ich tippe auf 4 seiten
    aber dann wird er nicht geschlossen, sondern es kommt nichts neues mehr

    Wollt ihr etwa dass net recht behält 🤡



  • *irgendwasneuesbring* 🤡 👍



  • *Anastacia - Sick and tired hör



  • SirLant schrieb:

    @Optimizer, ok hste recht normal hat man am Anfang viel und dann tut sich eigentlich nichts mehr, ich hatte so ne Vision im Kopf wo er ewig weiter immer mal wieder was kompilieren muss, aber das stimmt ja nicht so ganz *g*

    net schrieb:

    CarstenJ schrieb:

    Ok, 18 Seiten! 😉

    ich tippe auf 4 seiten
    aber dann wird er nicht geschlossen, sondern es kommt nichts neues mehr

    Wollt ihr etwa dass net recht behält 🤡

    Nein... 🤡



  • ...wirklich nicht...



  • ..oder doch???...



  • ...hab etwas Wein getrunken...



  • ..und bin etwas angetrunken...



  • ...und weil müde bin...



  • *Seite 5 einweih 🙂



  • ...(ich) hör ich jetzt auf und geh ins Bettchen...muhahaha...



  • Sorry, dass ich dich unterbrochen habe. Aber ich wollte einfach persönlich sicherstellen, dass net nicht gewinnt 😉



  • Kein Problem, das war es wert. (Ich hoffe nur, das wird nicht gelöscht 🤡 )



  • CarstenJ schrieb:

    Kein Problem, das war es wert. (Ich hoffe nur, das wird nicht gelöscht 🤡 )

    ICH hoffe, dass der Thread jetzt geschlossen wird. 😃



  • SirLant schrieb:

    Und wie soll ein Javaprogramm schneller sein als ein kompilliertes Programm? Dazu müsste die JVM entfernt werden und das javaprogramm ebenfalls kompilliert werden, da die JVM ganz einfach auch Zeit braucht welche sie dem Programm nunmal klauen muss.

    Nein. Das ist alleine schon deshalb falsch, weil du von einer idealisierten Welt ausgehst, in der die Compiler nicht suboptimale Programme sind, die von Menschen programmiert wurden, sondern perfekte Programme, die den optimalen Output produzieren. Davon ist man weit entfernt. Aus diesem Grund haben solche theoretischen Betrachtungen, wie "die JVM braucht ja selbst auch Zeit" keinerlei Bedeutung.

    Gleiches gilt für die Standardbibliotheken usw.!

    (ich komm jetzt mal nicht mit Argumenten wie "Die JVM hat zur Laufzeit mehr Informationen zur Optimierung zur Verfügung als es normale Compiler haben")

    Abgesehen davon müssen Java-Programme überhaupt nicht schneller als C++-Programme laufen: Früher war die Performance von Java ein Grund gegen Java. Es geht ja nur darum, dass dieser Nachteil von Java größtenteils verschwunden ist. Es reicht vollkommen, dass Java relativ nah an C++ herangekommen ist, was die Ausführungsgeschwindigkeit der Programme betrifft. Wenn sich jemand nicht mehr fragt, wieviel langsamer Java ist, sondern ob Java oder C++ schneller ist, dann zeigt er, dass er den Grund für diese Vergleiche nicht mehr kennt. Wenn die Frage so lautet, dann hat Java also in jedem Fall schon gewonnen.



  • GPC schrieb:

    An alle die meine vermeintliche Inkompetenz in C++ rügen: Zählt mir mal diese enormen Entwicklungen von C++ auf!

    1
    2 ...
    to be continued



  • Gregor schrieb:

    SirLant schrieb:

    Und wie soll ein Javaprogramm schneller sein als ein kompilliertes Programm? Dazu müsste die JVM entfernt werden und das javaprogramm ebenfalls kompilliert werden, da die JVM ganz einfach auch Zeit braucht welche sie dem Programm nunmal klauen muss.

    Nein. Das ist alleine schon deshalb falsch, weil du von einer idealisierten Welt ausgehst, in der die Compiler nicht suboptimale Programme sind, die von Menschen programmiert wurden, sondern perfekte Programme, die den optimalen Output produzieren. Davon ist man weit entfernt. Aus diesem Grund haben solche theoretischen Betrachtungen, wie "die JVM braucht ja selbst auch Zeit" keinerlei Bedeutung.

    Aber die JVM ist ja auch nicht perfekt wodurch sich dies ja wieder ausgleicht.


Anmelden zum Antworten