Hey es gibt unendlich viele Benchmarks; und (für gewöhnlich) ist einer subjektiver als der andere.
Es heißt “immer”, dass C++ nicht langsamer als C sei. – Ein Umstand, den ich einfach nicht glauben mag.
Denn, bei C++ passiert erheblich mehr, was man unschwer schon an der Größe des kompilierten Ergebnisses sehen kann. Faktisch kostet “unnützes” Instanzieren, Reservieren und Kapseln Zeit. – Zeit, die man, so das lang läufige herbei zitierten Argument, locker zur Verfügung hat. Schließlich sind heutige Rechner, seien es nun Server oder Smartphones, leistungsstark genug. Ich sage, dass genau das das Totschlagargument ist, was einen Ausschluss in sich trägt. Wer argumentiert denn bitte:
“Aaach, was heißt denn mein Favorisiert ist langsamer, braucht mehr Arbeitsspeicher und ist größer? Wir haben’s doch!”
…und es kurbelt doch die Wirtschaft an… 
Im Ernst, diese Argumente kennt man doch von den Java-Jünger, die der Meinung sind, dass Javas Ressourcen-Nachteile zu vernachlässigen sind; Vorteile, wie eine märchenhaft-schnellere Schleifenausführung, die in Benchmark X würden das doch ganz klar beweisen. *Gääääähhhhnnnnn!*
Nicht ganz freiwillig kam ich nun auch zu einem Test bzw. Benchmark. Es handelt sich dabei um ein aktuelles Projekt, dass ich begann in reinem, purem C zu entwickeln. 2 Wochen arbeitete ich daran, bis man mir in's Gewissen redete und ich dann (aus Vernunft) C++ den Vorrang geben musste. Warum? Innerhalb von 2 Tagen setzte ich das selbe in C++ um. Hui! Ohne lange rechnen zu müssen, stand somit fest, dass ein möglicher Entwicklungszeitbenchmark, wenn auch nicht ganz sauber gemessen, eindeutig C++ als Gewinner hervor brachte.
Nun hatte ich ein und das selbe Projekt. Einmal in C und einmal in C++ entwickelt. Beide taten exakt das Selbe; ich achtete bei der C++-Entwicklung darauf, der C++-Strategie zu folgen und nicht C mit einem C++-Compiler zu bauen.
Die Art des Test mag ebenfalls nicht ganz sauber sein. Ich habe es mir sehr einfach gemacht; denke aber, dass mein Ergebnis eine Grundaussage in sich trägt.
time for (( i=0; i<10000; i++ )); do ./c-test > /dev/null; done
real 0m22.714s
user 0m5.810s
sys 0m17.891s
time for (( i=0; i<10000; i++ )); do ./cpp-test > /dev/null; done
real 0m37.071s
user 0m18.908s
sys 0m20.287s
Die Größe der ausführbaren Datei ist auch nicht ganz uninteressant:
C: 16683 Byte
C++:32844 Byte
C++ ist also, im kompilierten Ergebnis, ca. doppelt so groß wie C. Selbst wenn die Differenz aus einfachen NOPs bestünde, wäre C++ immer noch größer, langsamer und rechenintensiver, oder!?
Ich bin mir bewusst, dass das aller, aller mindeste, was für einen echten Benchmark mit Aussagekraft, gegeben sein muss, das Testprogramm ist, aber das gibt es hier, heute und an dieser Stelle (noch) nicht. - Kein Geheimnis, sondern ein laufendes Projekt, welches sich nicht so einfach hier hinein kopieren lässt.
Klar ist auch, dass diese alberne Bash-Schleife, nebenläufige Prozesse, der System-Cache und vor allem persönliche Präferenzen auszuschalten sind. - Alles richtig!!!
...aber...
Darum geht es gar nicht! Es geht um ein reales Beispiel, welches einen realen Anwendungszweck verfolgt. - Hier wurde nichts beschönigt oder zurecht manipuliert. - Ich wollte, weil die Gelegenheit nicht besser hätte sein können, wissen, wie es wirklich um den Mythos "C++ ist fast genau so schnell wie C" bestellt ist.
Meiner Einschätzung nach ist, was die technischen Ressourcen angeht, C um Längen besser als C++. Wenn wir aber schon einen Blick auf die Realität werfen, müssen wir aber auch in Betracht ziehen, dass die Entwicklung mit C++ sehr viel entspannter und schneller von statten geht. Auch und gerade bei größeren Projekten gestalltet sich das Entwickeln mit C++ sehr, sehr viel vorteilhafter.
Wenngleich C schlanker und schneller ist, so hat dennoch C++ meinen persönlichen Benchmark gewonnen. Ja, für eine Webanwendung ist die Ausführungsgeschwindigkeit genau so wichtig wie die Möglichkeit sparsam mit den Serverresourcen umzugehen, aber dennoch:
Irgendwann möchte man seine Anwendung auch mal fertig bekommen.
Meine Schlussfolgerung führte mich zu folgender Erkenntnis, aus der wiederum der darauf folgende Entschluss fußt.
Das Projekt wird in und mit C++ entwickelt. Zeit-/Ressourcenkritischen Bereiche werde ich aber mit C umsetzen. Ein Char-Feld ist eben schneller, als ein String...so lange man weiß, was man tut.