Java ist schneller als C++!



  • Erstmal eine kleine Übersicht über die Supercomputer hier und jetzt noch etwas über den aktuell stärksten nicht-militärischen, das gibts hier.

    Ürigens heißt er nicht mehr Roadrunner, aber das ist bei den Wikipedia-Leuten noch nicht angekommen. Derzeit hat er afaik noch keinen neuen offiziellen Namen.



  • Supercomputer schrieb:

    Erstmal eine kleine Übersicht über die Supercomputer hier und jetzt noch etwas über den aktuell stärksten nicht-militärischen, das gibts hier.

    Ürigens heißt er nicht mehr Roadrunner, aber das ist bei den Wikipedia-Leuten noch nicht angekommen. Derzeit hat er afaik noch keinen neuen offiziellen Namen.

    Ok vergesst die Wikipedia-Auflistung der Supercomputer, schaut lieber hier.



  • neoexpert schrieb:

    ...
    Deswegen steht da auch:
    höchstgeschwindigkeiten**???**...

    Da hattest Du aber wohl den zusammenhang nicht gesehen zu:

    neoexpert schrieb:

    ...
    Eine Sprache [....] kann nie langsammer sein [...]

    Hier bringst Du wieder das Thema "Geschwindigkeit einer Programmiersprache" auf den Tisch. Wenn aber etwas "langsamer" (oder eben "schneller") sein kann, ist die Frage nach der "Höchstgeschwindigkeit" zwingend.
    Wenn Du also "Höchstgeschwindigkeit" nicht sinnvoll in den Zusammenhang bringen kannst, sind auch Kategorien wie "langsam(er)" sinnlos....

    Gruß,

    Simon2.



  • Was ist für euch die Geschwindigkeit einer Programmiersprache?

    Für mich ist das die Geschwindigkeit mit der ich darin ein Programm schreiben kann, macht ja auch durchaus sinn, das so zu gebrauchen. Da man auch sagt: in Ruby kannst du schneller einen FTP Client schreiben als in C.
    Also scheint Ruby schneller zu sein als C.

    Der C-Programmierer antwortet dann natürlich "Ja, da hast du recht, aber ich schreibe meinen FTP-Client in C, da ich hier größeren Einfluss auf die Ausführungsgeschwindigkeit habe.".
    Und da hat er auch recht, allerdings kann man auch in Ruby unterschiedlich effizienten Code schreiben.

    Und dann ist da noch die große Frage: wie vergleichen wir? Die Ausführungsgeschwindigkeit des entstandenen Programms hängt ja von dem Compiler ab, insofern man überhaupt einen benutzt und keinen Interpreter, von den verwendeten Bibliotheken, vielleicht sogar von dem Betriebssystem.

    Wie will man also ernsthaft die Ausführungsgeschwindigkeit von Programmiersprachen vergleichen? Nehmen wir einmal Java, da fängt ja schon die Frage an: welche Virtual Machine benutzen wir für den Test? Welches Betriebssystem? Welche Hardware? Wie können wir sicher sein, dass wir die richtige Kombination von all diesen Parameter haben und das Programm so geschrieben haben, dass es auf dieser Kombination die optimale Ausführungsgeschwindigkeit liefert?



  • Schlauer Fragesteller schrieb:

    Was ist für euch die Geschwindigkeit einer Programmiersprache?...

    Eben!
    Das versuche ich hier schon länger und öfter einzubringen - aber Du hast es viel schöner und besser auf den Punkt gebracht.

    Gruß,

    Simon2.



  • Hi,

    willkommen bei den Kümmelspaltern.
    Das ist genau so schnacksig wie damals die immer wiederkehrenden Vergleiche ob nun der Arj oder der LHArc oder der LHA oder der Rar schneller sind. Und dann wurden gewaltige Benchmarks gefahren die zeigen sollten, daß der oder jener 3 ms schneller war.
    Wens Sachen sind, wo wirklich gigantisch viel zu rechnen ist, dann empfehle ich auch heute noch Fortran, und ansonsten ists doch fast egal. Die Rechner sind heute so schnell, das die Zeitverzögerung fast immer 30 cm VOR dem Bildschirm sitzt. Und bei gößeren Projekten dauert die Entwicklung meist doch ein wenig länger, so daß die Rechner dann auch schon wieder schneller sind.
    Was die Ausführungszeit gewaltig ausbremsen kann, sind Plattenzugriffe, aber dann muß ich eben meinen Algorithmus ein wenig überdenken oder auf Solid-Disks zurückgreifen. Meist ist der Einflus eines guten oder schlechten Programmierers um den Faktor 10 wirksamer als eine Änderung der Programmiersprache.
    Was nützt das schnellste Programm, wenn das Ergebnis nicht korrekt ist oder sich nicht an Änderungen anpassen lässt.
    Was heute wirklich zählt ist wie schnell und exakt sich das Programm erstellen läßt und wie gut es später zu ändern oder anzupassen ist. Und da ist die Unterstützung durch die Entwicklungsumgebung wesentlich entscheidender als die Spreache an sich.

    Gruß Mümmel



  • Es ging von Anfang an um die geschwindigkeit der Programme die mit einer Programmiersprache geschrieben werden und da kann es schon passieren, dass ein Programm langsamer läuft als das andere, wenn man mit verschiedenen pogrammiersprachen programmiert...
    hier ist eine liste der möglichen:
    http://de.wikipedia.org/wiki/Liste_der_Programmiersprachen
    Es ist also klar, dass programme die mit Skriptsprachen wie PHP oder Perl nie die geschwindigkeit erreichen die mit einer sprache geschrieben wurden mit der man nur reinen maschinencode im Endergebniss hat.
    Achja übrigens, mit welcher sprache wurde denn Java geschrieben?



  • neoexpert schrieb:

    Es ist also klar, dass programme die mit Skriptsprachen wie PHP oder Perl nie die geschwindigkeit erreichen die mit einer sprache geschrieben wurden mit der man nur reinen maschinencode im Endergebniss hat.

    du hast es immer noch nicht verstanden. die 'sprache' ist nur ein formalismus, mit dem man 'nem computer sagen kann, was er machen soll. ob's zu maschinencode compiliert oder ein interpreter jedes bit dreimal umdrehen muss, hat mit der sprache nichts zu tun.
    🙂



  • -fricky- schrieb:

    du hast es immer noch nicht verstanden. die 'sprache' ist nur ein formalismus, mit dem man 'nem computer sagen kann, was er machen soll. ob's zu maschinencode compiliert oder ein interpreter jedes bit dreimal umdrehen muss, hat mit der sprache nichts zu tun.

    Wie gesagt, es ging ja um Programme die mit einer sprache geschriben sind.
    Ich habe aber den Begrif sprache verwendet, weil es hier in diesem thread darum geht...
    wahrscheinlich meinte der "IT-TITAN" auch, dass die Software die mit java geschrieben wird schneller ist als eine Software die mit c++ geschriben wurde. Das stimmt aber nicht.
    deswegen sage ich: Programme die mit einer Programmiersprache geschriebn sind, mit der man hardwarenah programmieren kann, können nie langsammer sein als Hardware.



  • neoexpert schrieb:

    Programme die mit einer Programmiersprache geschriebn sind, mit der man hardwarenah programmieren kann, können nie langsammer sein als Hardware.

    Das Statement ist vollkommener Blödsinn.



  • Blödsinn Aussagen gibt es nicht.
    es gibt nur wahre oder falsche Aussagen.



  • neoexpert schrieb:

    Blödsinn Aussagen gibt es nicht.
    es gibt nur wahre oder falsche Aussagen.

    ich denke auch manchmal gern ein bisschen grau 🙂



  • Nur so als Anregung: für wirklich zeitkritische Sachen gibt es extra Hardware die das erledigt.
    Scheinbar gibt es also schon einen Unterschied, ob etwas fest verdrahtet ist, oder ob man eine generische programmierbare Hardware benutzt.

    Was ist, wenn ich einen PHP Compiler schreibe der dir eine ausführbare Datei erzeugt, oder noch besser ich speichere das Maschienencode-Compilat des PHP JITers ab (ggf. noch paar Sachen ergänzen damit es auch ausführbar ist).
    Dann wird das Programm plötzlich nicht mehr interpretiert vor der Ausführung.

    Oder ich starte dein C-Programm einfach mit einem C-Interpreter...

    ...und so weiter und so fort.



  • Jaja, allgemein ist das aber so, dass C programme immer erst compiliert werden.



  • Eine Sprache ist vielleicht nicht schneller oder langsamer als eine andere, aber in der Praxis ist die Wahl der Sprache doch wichtig, wenn Ressourcen sparen angesagt ist.

    Schreib doch mal ein Programm in Python und versuche das auf einem Low-End Mikrocontroller (zB in einer einfachen digitalen Küchenuhr) zum Laufen zu bringen. Geht nicht so gut? Nein, weil Interpreter und Programm viel zu viele Ressourcen verbrauchen -> ist langsamer. Warum wird für sowas also C eingesetzt? Weil man damit sehr sparsam programmieren kann.

    Wer hatte nochmal die schöne Signatur mit der Theorie und Praxis? 😃
    Eine Sprache A ist nicht schneller als eine Sprache B, aber wenn ich in beiden Sprachen 100 Programme schreibe und allesamt werden vom jeweils "besten" Compiler bei A in effizienterem Maschinencode verwandelt, kann man doch durchaus behaupten, daß A schneller ist, oder?



  • neoexpert schrieb:

    Jaja, allgemein ist das aber so, dass C programme immer erst compiliert werden.

    Nein, das ist falsch, bzw. du weißt es nicht besser. "allgemein" bzw. "im Allgemeinen" benutzt man, wenn man keinerlei Einschränkungen macht.
    Und im Allgemeinen wird ein C Programm eben nicht kompiliert.

    Nagila Hawa, du wirfst da schon wieder vieles durcheinander, offensichtlich vergleichst du hier zwei verschiedene Compiler und nicht die Sprachen auf ihre Unterschiede was die Geschwindigkeit angeht.
    Man benutzt C übrigens in diesen Fällen, weil man für C sehr leicht einen Compiler schreiben kann zum einen und der Hauptgrund: die Leute in dem Umfeld haben C einfach zum Standard gemacht.
    Wenn ich eine rekursive Datenstruktur, wie einen Baum, speichern will dann denk ich auch sofort an XML und komme nicht auf die Idee es als CVS zu speichern, nicht weil es nicht gehen würde, sondern weil XML der Standard ist. Es dementsprechend genügend Know-How gibt auf das ich zugreifen kann, etc.

    Was C übrigens so angenehm für die Microcontroller macht ist die Einfachheit, weil der Programmierer alles machen muss. Und dann sind wir schon wieder bei dem oben gesagten: ein Compiler lässt sich sehr leicht entwerfen für C.

    P.S. Bitte beachtet das leicht in Verbindung mit einem Compiler als "relativ leicht", also im Vergleich zu Compilern für andere Sprachen, wie C++.



  • Falsch schrieb:

    Und im Allgemeinen wird ein C Programm eben nicht kompiliert.

    Was wird denn sonst mit den C programmen bitte gemacht? In den meisten fällen wird ein C-Programm compiliert.



  • Falsch schrieb:

    Nagila Hawa, du wirfst da schon wieder vieles durcheinander, offensichtlich vergleichst du hier zwei verschiedene Compiler und nicht die Sprachen auf ihre Unterschiede was die Geschwindigkeit angeht.
    Man benutzt C übrigens in diesen Fällen, weil man für C sehr leicht einen Compiler schreiben kann zum einen und der Hauptgrund: die Leute in dem Umfeld haben C einfach zum Standard gemacht.
    Wenn ich eine rekursive Datenstruktur, wie einen Baum, speichern will dann denk ich auch sofort an XML und komme nicht auf die Idee es als CVS zu speichern, nicht weil es nicht gehen würde, sondern weil XML der Standard ist. Es dementsprechend genügend Know-How gibt auf das ich zugreifen kann, etc.

    Was C übrigens so angenehm für die Microcontroller macht ist die Einfachheit, weil der Programmierer alles machen muss. Und dann sind wir schon wieder bei dem oben gesagten: ein Compiler lässt sich sehr leicht entwerfen für C.

    Natürlich vergleiche ich verschiedene Compiler... Ein C Compiler kann ich nicht für Pascal-Programme verwenden, also benutze ich bei beiden Sprachen unterschiedliche Compiler. Wenn ein bestimmter Compiler den Ruf hat für das Zielsystem den schnellsten Code zu produzieren, dann nutze ich, wenn ich das schnellste Programm haben will, genau diesen Compiler (natürlich nur theoretisch...). Und da der Compiler nunmal nur xyz übersetzt und eben nicht C, Java, Pascal oder Brainfuck, werde ich auch die Sprache xyz benutzen müssen -> für das schnellstmögliche Programm nutze ich also die Sprache xyz.

    C ist für den Compiler relativ einfach gehalten, daher ist es auch für den Compilerbauer einfacher den Compiler zu optimieren. Ich gehe übrigens mal davon aus, daß es nie eine effizientere Implementation für Python geben wird, als für C.

    Theorie: Sprache A ist nicht schneller oder langsamer als Sprache B -> Sprache ist egal.
    Praxis: Der Compiler für Sprache A produziert effizienteren Code als der für Sprache B -> Sprache ist nicht egal.

    Insofern vergleiche ich zwar die Compiler und nicht die Sprachen, aber der verwendete Compiler bestimmt ja auch die zu verwendende Sprache.



  • Nagila Hawa schrieb:

    Eine Sprache ist vielleicht nicht schneller oder langsamer als eine andere, aber in der Praxis ist die Wahl der Sprache doch wichtig, wenn Ressourcen sparen angesagt ist.

    es liegt nicht primär an der sprache, sondern an dem ganzen beiwerk, was dafür sorgt, dass deine progrämmchen lahm oder schnell sind. manche sprachen brauchen nunmalerweise interpreter oder virtuelle maschinen, aber niemand verbietet einem, einen compiler für diese sprachen zu entwickeln, der extrem optimierten maschinencode erzeugt. es gibt natürlich sprachen, die geradezu dazu verführen, unnötig kompliziertes und potenziell langsames zeug zu coden. aber die sprache selbst kann nichts dafür, wenn benutzer unbedacht damit umgehen.
    🙂



  • neoexpert schrieb:

    Blödsinn Aussagen gibt es nicht.
    es gibt nur wahre oder falsche Aussagen.

    Nachts ist es kälter als drausen.
    wahr oder falsch?
    Ein Satz der auf deutsch ausgesprochen wird, kann nie langsamer sein als Deutschland.
    wahr oder falsch?
    Programme die mit einer Programmiersprache geschriebn sind, mit der man hardwarenah programmieren kann, können nie langsammer sein als Hardware.
    wahr oder falsch?
    Alles Blödsinn.

    Es gibt sogar sinnvolle Aussagen die man nicht mit wahr oder falsch beantworten kann.
    http://de.wikipedia.org/wiki/Halteproblem


Anmelden zum Antworten