Frage zur Schnelligkeit von Programmiersprachen?

3 Antworten

Grundsätzlich gilt:

Wer von der "Geschwindigkeit" einer Programmiersprache spricht, meint damit stets, wie schnell in dieser Programmiersprache codierte Programme beim Aufruf durch Anwender arbeiten.

Die Geschwindigkeit, mit der entsprechende Compiler arbeiten, ist irrelevant (da alle in derselben Programmiersprache implementierten Compiler gleich effizient arbeiten - ganz unabhänging davon, welche Programmiersprache sie unterstützen).

Je höher die Programmiersprache - d.h. je komfortabler sie ist, sprich: je mehr Arbeit sie dem Programmierer abnimmt - desto langsamer werden in ihr geschriebene Programme arbeiten.  

Die Kunst, perfekte Compiler zu erstellen - solche also, die gut optimierten Code erzeugen - ist heute schon sehr weit fortgeschritten. Daher kommt es, dass z.B. in Java implementierte Programme heute nur unwesentlich träger arbeiten als in C++ geschriebene.

Wo es auf auch sehr kleine Unterschied noch ankommt, z.B. bei der Implementierung von Gerätetreibern, verwendet man aber immer noch C oder gar Assembler: Man ist dann nämlich der Zielsprache (der Sprache, welche die Maschine direkt versteht) besonders nahe. 

Note: Objektorientierter Code arbeitet besonders träge, wo sog. Stringklassen verwendet werden. Man sollte sich deswegen gut überlegen, ob man sie überhaupt verwenden möchte. In C++ etwa kommt man sehr gut auch ohne sie aus.

grtgrt  31.05.2020, 13:08

Insbesondere mit Python sollte man vorsichtig sein, denn:

Fakt ist: In Python implementierter Code arbeitet um einen Faktor 50 bis 150 langsamer als in C geschriebener. Somit ist Python nur geeignet für Programme, bei denen es nicht darauf ankommt, wie schnell sie antworten.

0
Muellmann275  30.01.2021, 14:15
@grtgrt

Programme, bei denen es nicht darauf ankommt, wie schnell sie antworten, gibt es nicht. Denn wenn es darauf nicht ankommt, dürften solche Programme ja auch 100000 Jahre bis zur Antwort laufen.

1

Java läuft in einem Maschinensimulator, d. h. der Maschinencode ist kein richtiger Code, der direkt auf dem Prozessor läuft, sondern wird in einer virtuellen Maschine interpretiert.

Der Overhead der VM sorgt dafür, daß Java etwas langsamer ist.

Java ist einfach gestrickt. Vieles wird durch den Interpreter bereit gestellt und verwaltet. Man braucht es nicht selbst zu machen.

Alles, was sich auf dem Garbage Heap befindet, wird nicht vom Programmierer verwaltet. Er nimmt darauf nur indirekt Einfluss. Da ist es ganz klar, dass vieles verwaltet wird, was man augenblicklich gar nicht braucht.

In C/C++ sind muss man vieles selbst machen. Man macht aber auch nur das, was man selbst wirklich braucht.