Dem wird ja von Java Jüngern oft widersprochen. Nach überfliegen von einigen Google Funden scheinen einige die Meinung zu vertreten Java wäre mindestens genauso schnell wie C wenn nicht schneller.
Na wenn die Java-Jünger das wirklich glauben, dann haben sie sich erstens zu wenig mit der Art und Weise, wie ihre Programmiersprache funktioniert, auseinandergesetzt. Und zweitens haben sie es dann offenbar auch nie ausprobiert oder zumindest mal Tests dazu gelesen. Nicht gegen Sprachen wie Java oder C#. Tolle Sprachen! Aber eben nicht für Performance oder Hardwarenähe
Es ist natürlich auch nicht ganz einfach, die Performance von Programmiersprachen zu vergleichen. Man muss ja auch gleiches mit gleichem vergleichen. Aber diese Seite hier, versucht genau das:
http://benchmarksgame.alioth.debian.org/ Da werden quasi feste Algorithmen vorgegeben und man kann dann Programme in den jeweiligen Programmiersprachen schreiben, die diesen Algorithmus implementieren. Die Programme werden dann auf immer der selben Hardware ausgeführt und deren Performance gemessen. Hauptsächlich natürlich interessant ist die Ausführdauer bis zum Ergebnis, aber natürlich auch der RAM-Verbrauch dabei und ggf. noch, ob sie die CPU überhaupt "vernünftig" ausgelastet haben.
Für mich interessante Schlüsse, als ich mir das mal angeschaut habe:
- C ist fast immer am schnellsten
- C++ ist auch sehr schnell, aber kann nicht ganz mit C mithalten
- die neue Programmiersprache von Mozilla namens Rust ist ebenfalls meist recht weit vorne mit dabei, hat aber wohl einige Vorteile gegenüber C/C++
- C# und Java sind ca. um den Faktor zwei langsamer als C (ich hätte es ehrlich gesagt schlimmer vermutet! Aber Faktor 2 ist natürlich auch schon nicht ohne)
- Java ist meist einen Tick langsamer und etwas speicherhungriger als C#, einzelne Benchmarks scheinen dafür C# aber überhaupt nicht zu liegen, da ist es dann deutlich langsamer als Java
- Node.JS ist lahm. OK. War aber auch zu erwarten eigentlich ^^ Bis auf einzelne Ausnahmen um Faktoren zwischen 8 und 16 langsamer als die Spitzengruppe.
- Python ist ebenfalls lahm. Und zwar noch viel schlimmer als Node.JS. Da sind nicht wenige Faktoren von 100 und höher dabei, teilweise ist Python Schlusslicht. So schlimm hätte ich es nicht erwartet...
- ein paar der "alten" Sprachen wie Fortran können manchmal auch ziemlich gut oben mithalten
Gerade habe ich nochmal nach Pascal dort geschaut. Ist tatsächlich auch dabei
Dessen Performance ist aber durchwachsen... Teilweise um den Faktor 2-3 langsamer, manchmal auch Faktor 5 bis hin zu Faktor 12. Damit ist es teilweise noch deutlich langsamer als Node.JS, in einzelnen Benchmarks wie der Berechnung von Pi-Stellen ist es aber plötzlich auf Platz zwei gleichauf mit C. Das ist aber auch der einzige Fall. ^^
Zweifel kommt nur dann auf wenn Apple mit Objective C und jetzt Swift mit im Vergleich zu Android High-End Hardwaremonstern geradezu bescheidenen Rechenleistung/RAM/Stromverbrauch bessere Benchmarkergebnisse abliefern.
Bei Objective C kann ich mir das vorstellen (leider ist es nicht in den obigen Benchmarks), bei Swift aber nicht. Das ist in den Benchmarks in manchen leicht langsamer als Java, in anderen dagegen um den Faktor 5-10 langsamer:
http://benchmarksgame.alioth.debian.org/u64q/swift.html
Zu Pascal vs C... Erinnere mich an Turbo Zeiten. Nach Turbo C++ war Pascal doch ein einschneidendes Erlebnis. Nach Drücken von F6 (???) flackerte der Bildschirm kurz auf. Warum startet der Compiler/Linker nicht? Bei C dauerte es einige Sekunden bis Minuten bis ein Programm gebaut war. Turbo Pascal brauchte nur einen Bruchteil einer Sekunde. Statt einen Schirm mit Meldungen bei der man verfolgen konnte was der Computer gerade macht gab es ein kurzes Flackern weil der Schirm gleich nach dem Start wieder zu war, da fertig.
Ja, Pascal ist stark für den Compiler optimiert worden, so dass dieser so schnell arbeitete, dass man manchmal glaubte, man hat eine Interpretersprache statt einer kompilierten vor sich. Meiner Meinung nach ist das aber der falsche Ansatz. Was bringt es mir, wenn mein Programm in Sekundenbruchteilen kompiliert, aber nachher in der alltäglichen Ausführung Stunden braucht? Dann nehme ich lieber ein paar Sekunden, Minuten oder notfalls auch Stunden zum Kompilieren auf mich, aber dafür läuft es danach flott.