Welche ist die schnellste Programmiersprache?

Mein neues Projekt, benötigt eine schnellst mögliche Ausführung. Dadurch würde ich gerne wissen, welche Programmiersprache die schnellste ist?

Auf Oberflächenprogrammierung kann verzichtet werden. Die Anwendung wird im guten, alten, schwarzen Fenster laufen.

Java und C# fallen durch die VM ganz klar weg. Gibt es noch Alternativen zu C/C++, bzw. gibt es einen markanten Unterschied zwischen C und C++ (Geschwindigkeit)?

Es gibt KEINE markante Unterschied zwischen C und C++ in den Kompilerten Code, also im Geschwindigkeit. Allerdings ist es besser, *kein* .NET „C++“ zu verwenden, da es auch dort ein interpreter gibt.

Also… reines C+++, so rein wie möglich, ist eine exzellente Alternative. Es mag sein, dass es andere Sprachen gibt, die genauso schnell sind, oder ggf. 20% schneller… man kann immer noch in Assembler codieren (ich rate davon komplett ab, es sei denn, Sie sind ein echter Assembly experter und die Aufgabe ist sehr einfach oder extrem rein numerisch).

Ich würde C++ nehmen. Als Sprache. Wichtig ist aber, dass die Algoritmen schnell sind, und die Datenspeicherung auch. Das wird die grosse Unterschiede machen. C++ mit Algoritmen die Kosten von N^4 haben sind langsamer als Java algoritmen mit N^2 , wenn N *etwas* gross ist und die minimale Kosten nicht-trivial. Was ich damit meinen will, ist - passen Sie auf die Schleifen, eingebettete Schleifen, Funktionsaufrufe auf Funktionen, die wiederum Schleifen haben.

Versuchen Sie auch die Anzahl von Datenbankzugriffe zu minimieren (ihre Komplexität kann ruhiger steigern, besser ein komplexes JOIN als 2 hits in den DB), und die Dateizugriffe auch. Versuchen sie, alles in grosse „Blocks“ zu machen, anstatt elegante aber (leider) stark eingebettete und komplexe Strukturen, wo A ruft B und B ruft C an… obwohl eigentlich A das auch tut… etc. Da verliert man sehr schnell den Überblick auf die Kosten.

In notfall, haben sie einem Logging system bereit, den sie ausschalten können (eine C++ macro ist dafür ideal, #define LOGGING, #ifdef LOGGGING …), so dass sie die Performance-Probleme schneller erkennen können.

Viel Glück.

Wenn man weiß, was man tut, geht alles am schnellsten in Assembler.

Ich bin kein Optimierungsprofi, habe aber auch schon einiges über das Thema gelesen.

Java und C# fallen durch die VM ganz klar weg.

Java und C# sind nur beim ersten Ausführen langsamer, danach gibt es keine eklatanten Unterschiede mehr. Dies liegt am JIT (Just in time) Compiler, der die Zwischensprache von Java/C# in Maschinencode übersetzt.
(Es gab mal einen Vergleich bei c’t oder iX, aber ich kann den Artikel leider nicht finden…)

Gibt es noch
Alternativen zu C/C++, bzw. gibt es einen markanten
Unterschied zwischen C und C++ (Geschwindigkeit)?

Theoretisch wäre die Implementation in Assembler, sofern wirklich optimiert, die schnellste. Aber die Compiler können den Code von C/C++ meist besser optimieren als ein Entwickler. Der Compiler kann auch die Features eines Prozessors ausnutzen, wenn das Optimieren auf einen bestimmten Prozessor erlaubt ist.(Abhängig vom Einsatz/Umfeld Deiner Software)

Es dürfte aber vermutlich wichtiger sein, effiziente Algorithmen zu verwenden als eine andere Sprache für die Entwicklung einzusetzen. Dies ist natürlich auch von der Aufgabe abhängig, z.B. ist die Aufgabe parallelisierbar, gibt es bekannte Algorithmen für die Aufgabe etc.

Abschliessend ist noch zu sagen, dass Optimierungen meist eine schlechtere Lesbarkeit des Codes (und damit eine schwierigere Wartung) zur Folge haben.
-> Der Code muss zuerst fehlerfrei laufen, bevor Optimierungen überhaupt Sinn machen!

Danke erstmals für die schnellen Antworten!

Die Grundbegriffe von Assembler sind mir zwar bekannt, aber die Lösung in Assembler schein praktisch unmöglich für mich.

Gut zu wissen, dass es da keinen Unterschied gibt. Danke für den Hinweis auf „.NET C++“. Meiner Meinung nach totaler Unsinn. Ich werde natürlich versuchen nicht über N^2 zu kommen. Rekursionen scheinen mir generell eine schnellere Lösung zu sein als verschachtelte Schleifen. Für mehr Geschwindigkeit nehme ich auch gerne mehr Speicherbedarf und Gedankenarbeit hin. (Falls eine Rekursion möglich ist!)
Ich bitte um Korrektur, falls ich mit den Rekursionen falsch liege.

Kann mir vielleicht noch Jemand beantworten, ob dynamische Datenstrukturen in C oder C++ besser zu realisieren sind. Bis jetzt kenne ich diese nur in C, da ich es in C++ noch nicht versucht habe.

Mein Projekt ist quasi ein abgeschwächtes Datenbankmanagementsystem. Ein Kollege und ich entwickeln dieses mit Schwerpunkt auf schnellst mögliche Abfragen und größter möglicher Parallelität von Transaktionen.

Da ich mich mit C sehr gut auskenne und auch Objektorientiertes Programmieren sehr gut beherrsche, stürze ich mich auf C++.

Hallo,

in diesem Fall würde ich dir zu C raten.
C++ kann genauso schnell sein, wie C. Man kann aber auch Sachen in C++ machen, die zwar komfortabel sind, aber u.U. dann auch Zeit kosten.

Im Prinzip gilt die Aussage aber auch umgekehrt: wenn man in C etwas selber macht, was es in C++ bereits gibt, ist nicht garantiert, dass die eigene Implementierung optimaler ist, als eine bereits vorhandene.

Eigentlich müsstest du genauer Details deines Problems erzählen, um konkreter antworten zu können.

Meist ist die Antwort nämlich nicht die Programmiersprache, sondern die Performance der Hardware.