Java ist schneller als C++!



  • Mal zwei Zitate vom zweiten Link. Der erste ist ja eher ein Hardware-Test:

    "Java is often Just-in-time compiled at runtime by the Java Virtual machine. Hence, when Just-in-time compiled, its performance is generally: [10]

    * lower than the performance of compiled languages as C or C++, but not significantly for most tasks,
    * close to other Just-in-time compiled languages such as C#,
    * much better than languages without an effective native-code compiler (JIT or AOT), such as Perl, Ruby, PHP and Python."

    "Java memory usage is heavier than for C or C++, because:

    * parts of the Java Library must be loaded prior to the program execution (at least the classes that are used "under the hood" by the program) [12]
    * both the Java binary and native recompilations will typically be in memory at once, and
    * the virtual machine itself consumes memory."

    Also, wo steht da, daß Java schneller ist?



  • Naja dass die Sprache an sich (nahezu) gleich schnell wie C++ ist, stimmt schon. In der Praxis sind Java-Programme aber schon langsamer (bzw. mehr träge) als vergleichbare C++ Programme, was u.A. mit der Art zu tun hat wie man Java bzw. C++ programmiert und auch z.B. mit den verwendeten Bibliotheken (ja ich weiß, es gibt Ausnahmen).
    Ich (der mittlerweile auch quasi nur noch C# bzw. Java programmiert) würde nie behaupten, dass man damit wirklich schnellere Programme hinkriegt als mit C(++). Dass die Geschwindigkeitsunterschiede mittlerweile aber so gut wie nicht mehr existieren stimmt sicherlich.



  • ach.... schrieb:

    Bis die JVM mal gestartet ist, das ganze C++ Programm schon fertig. Und wenn alle Programme auf meinem Desktop schon mal 20MB mehr brauchen würden, dann würde ja sonst fast nix mehr Platz haben. Java ist für Server wo sich keiner um den Speicherverbrauch sorgen muss, auf dem DEsktopbereich braucht es immer noch viel zu viel.

    1. Bei Programmen, die nur eine Sekunde oder so laufen, ist die Performance eh wenig relevant.

    2. Also ich habe 8 GB RAM im Rechner. Was sind da schon 20 MB? 😋



  • nep schrieb:

    Naja dass die Sprache an sich (nahezu) gleich schnell wie C++ ist, stimmt schon.

    So kann man es wohl auch auslegen. Denn es ist völliger Schwachsinn von der Schnelligkeit einer Sprache zu sprechen.

    Du kannst von der Geschwindigkeit von Implementationen sprechen, oder auch davon wie geeignet eine Sprache dazu ist, performant implementiert zu werden, aber nicht von der Schnelligkeit einer Sprache an sich.

    nep schrieb:

    In der Praxis sind Java-Programme aber schon langsamer (bzw. mehr träge) als vergleichbare C++ Programme, was u.A. mit der Art zu tun hat wie man Java bzw. C++ programmiert und auch z.B. mit den verwendeten Bibliotheken (ja ich weiß, es gibt Ausnahmen).

    Was denn nun? "(nahezu) gleich schnell" oder nicht? Oder meintest du zuvor mit Java etwas anderes als Java-Programme?

    p.s. ein *träger* hat noch niemandem geschadet, und wenn, dann sicher weniger als *mehr träge* 😉



  • Gregor schrieb:

    2. Also ich habe 8 GB RAM im Rechner. Was sind da schon 20 MB? 😋

    Deswegen hat das ja noch lange nicht jeder.



  • Ähm, das ist ein Java Benchmark, kein Sprachenbenchmark, und das sun in ihrem eigenen Benchmark natürlich am besten ist, ist wohl auch kein Zufall.

    Und BOPS? Klingt für mich verdammt nach Bullshitbingo.



  • solange ich als anwender eine gefühlte halbe stunde warten muss bis die vm endlich mal gestartet ist, geht mir die ablaufgeschwindigkeit am allerwertesten vorbei.



  • 1. Bei Programmen, die nur eine Sekunde oder so laufen, ist die Performance eh wenig relevant.

    Na ja, wenn's ein CGI-Programm ist ...



  • einfach mal eclipse und visual studio starten und vergleichen



  • Scheppertreiber schrieb:

    1. Bei Programmen, die nur eine Sekunde oder so laufen, ist die Performance eh wenig relevant.

    Na ja, wenn's ein CGI-Programm ist ...

    deshalb verwendet man kein cgi... weil es einfach verdammt lahm ist. das liegt aber nicht an java oder c++ sondern daran, dass cgi einfach nicht skaliert.



  • ach.... schrieb:

    Gregor schrieb:

    2. Also ich habe 8 GB RAM im Rechner. Was sind da schon 20 MB? 😋

    Deswegen hat das ja noch lange nicht jeder.

    Das war ja auch nur beispielhaft. Heutige Rechner haben derart viel RAM, dass der Speicheroverhead einer JVM praktisch keine wirkliche Relevanz mehr hat. Auch wenn nur 2 GB im Rechner stecken.



  • IT-Titan schrieb:

    ...Re: Java ist schneller als C++!...

    und nachts ist es kälter als draußen.

    Sprachen haben keine Geschwindigkeit ... weswegen auch niemals eine "schneller" als eine andere sein kann.
    Was bleibt ist ein "Mein Papa ist aber stärker als Deiner" ... das hatten meine Töchter bereits mit Eintritt in die 1. Klasse abgelegt.

    Gruß,

    Simon2.



  • Sorry Simon der allerzweite,

    mach mal Laufzeitmessungen, vorzugsweise mit C und irgendsoeinem Java, Basic oder
    sonst so einem Schwindel. Dann reden wir nochmal über so einen Unfug.



  • Scheppertreiber schrieb:

    Sorry Simon der allerzweite,

    mach mal Laufzeitmessungen, ...

    Wovon soll ich Laufzeitmessungen machen ?

    Gruß,

    Simon2.



  • zzZz schrieb:

    solange ich als anwender eine gefühlte halbe stunde warten muss bis die vm endlich mal gestartet ist, geht mir die ablaufgeschwindigkeit am allerwertesten vorbei.

    witzigerweise scheint sich so'n java-vm selbst zu justieren. ich hab letztens eine grosse java anwendung ein paar mal auf 'nem schlappen rechner (800Mhz, 512MB RAM), laufen lassen. die ersten paar mal war's echt scheusslich. alles superlahm und wenn z.b. der GC zuschlug, war erstmal eine minute pause angesagt. aber nach dem 5ten, 6ten start wurden die pausen immer kürzer und die anwendung schien immer flüssiger zu laufen. jetzt kann man richtig damit arbeiten und wenn jetzt der GC mal alles aufräumen muss, sinds vielleicht nur 3 sekunden, die man warten muss. bilde ich mir das nur ein, oder ist java wirklich so intelligent geworden?
    🙂



  • Komplexe Programme mal in diversen Programmiersprachen bauen und halt mal die
    Laufzeiten messen. Nett ist bei CGI-Programmen mal die Response-Zeiten zwischen
    C und PHP oder Java mal zu messen.

    Bei reinen GUI-Programmen macht es nicht viel.



  • Scheppertreiber schrieb:

    Nett ist bei CGI-Programmen mal die Response-Zeiten zwischen
    C und PHP oder Java mal zu messen.

    Nett vielleicht, aber ziemlich unsinnig.

    Wenn dann muss man wohl sowas wie tntnet mit java server pages oder servlets vergleichen. aus dem .net bereich asp.net dazu und vielleicht ne c++ anwendung mit fast-cgi noch aus spass auch noch dazu.

    aber cgi ist eine technologie die einfach nicht skaliert. sie irgendwo einzusetzen wo geschwindigkeit relevant ist, ist einfach nur doof.



  • Ok, dann bin ich halt doof *blöök* *pfarzzz*

    Macht mir nix, der Kram läuft und die Performance ist auch ok.

    Wenn ich mal so richtig Zeit habe stricke ich alles in Apache-Module um.
    Mit Sicherheit schneller. Aber woher die Zeit nehmen ?



  • Scheppertreiber schrieb:

    Ok, dann bin ich halt doof *blöök* *pfarzzz*

    Macht mir nix, der Kram läuft und die Performance ist auch ok.

    Wenn ich mal so richtig Zeit habe stricke ich alles in Apache-Module um.
    Mit Sicherheit schneller. Aber woher die Zeit nehmen ?

    alles was ich sage ist, dass bei cgi die performance egal ist, da CGI die bremse ist.

    fast-cgi hilft hier zB schon einmal enorm. wenn man aber c++ code hat, ist tntnet einfach der richtige weg. wenn man java code hat sind server pages, etc. der richtige weg.

    programme per cgi aufzurufen ist einfach nur lahm. ein benchmark wuerde da keinen sinn machen. wenn man aber asp.net gegen java server pages gegen tntnet benchmarked, waere das uU schon interessanter.

    und fuer cgi - was fuer anwendungen hast du denn als cgi laufen? wenn sie script sprachen geschrieben sind, gibt es sicher server module fuer die interpreter. wenn es in c/c++ geschrieben ist -> fast cgi oder tntnet

    idealerweise macht man sowas natuerlich von anfang an richtig...



  • Vergleicht hier mal C/C++ mit Java: Die Geschwindigkeit bzw. Ausführungszeit ist *relativ* gleich, aber der RAM-Verbrauch ... ist meistens bei Java um das 80 bis 100fache höher ...

    http://www.spoj.pl/


Anmelden zum Antworten