Die Geschwindigkeit von C++
-
jerry schrieb:
Ein Argument ist noch, dass C/C++ auf wichtige interne Überprüfungen verzichtet, die einem später aber Kummer bereiten können: zB. Arraygrenzen. Da kann man munter drüber hinweg in den Speicher schreiben oder daraus lesen.
In der Kolumne (bzw. im Forum) geht es speziell um den Vergleich zu VB6 und .NET. Da es hier ebenfalls möglich ist, Ganzzahlüberlauf- und und Arraygrenzen-Tests abzuschalten, ist das kein Argument.
Trotzdem Danke für den Hinweis.
-
Da verweise ich aber ganz gehässig auf deinen ersten Satz: ..wieso C++ schneller als die meisten anderen Sprachen ist. Willst Du einen veralbern?
Gruss Jerry
-
jerry schrieb:
Da verweise ich aber ganz gehässig auf deinen ersten Satz: ..wieso C++ schneller als die meisten anderen Sprachen ist. Willst Du einen veralbern?
Da hast Du natürlich recht. In der Kolumne ist das anders formuliert.
PS: Ich sehe alles doppelt.

-
jerry schrieb:
Ein Argument ist noch, dass C/C++ auf wichtige interne Überprüfungen verzichtet, die einem später aber Kummer bereiten können: zB. Arraygrenzen. Da kann man munter drüber hinweg in den Speicher schreiben oder daraus lesen.
Gruss Jerry
jerry schrieb:
Ein Argument ist noch, dass C/C++ auf wichtige interne Überprüfungen verzichtet, die einem später aber Kummer bereiten können: zB. Arraygrenzen. Da kann man munter drüber hinweg in den Speicher schreiben oder daraus lesen.
Gruss Jerry
Das sind ja gleich zwei Argumente. :p
-
Ihr habt ja recht, ich kann auch bis zwei zählen - hab aber nur einmal auf <absenden> gedrückt !!
Jerry :p
-
Die Vergleiche mit C können ganz schnell nach hinten losgehen. Die Resultate hängen auf jeden Fall vom verwendeten Compiler und von der verwendeten Architektur ab.
Das gleiche gilt für die STL. Woher kommen Deine Annahmen die STL sei schneller als äquivalente Implementierungen in C? Templates können auch ganz schnell zu riesigem Bloat führen. Binarygröße hat Auswirkungen auf die Performance!
Wenn Du die Motivation dafür hat, dann solltest Du wenigstens Beispielsourcecodes veröffentlichen die mit versch. Compilern auf versch. Plattformen gebenchmarked wurden. Erst dann und nur dann kann man das beurteilen. Ein Beispiel dafür ist http://shootout.alioth.debian.org/. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C.

-
/. schrieb:
Das gleiche gilt für die STL. Woher kommen Deine Annahmen die STL sei schneller als äquivalente Implementierungen in C?
Dieser Satz muss geändert werden, da hast Du recht.
Ein Beispiel dafür ist http://shootout.alioth.debian.org/. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C.

Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.
-
Konrad Rudolph schrieb:
Ein Beispiel dafür ist http://shootout.alioth.debian.org/. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C.

Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.
Einm Vergleich g++ <-> gcc: http://shootout.alioth.debian.org/gp4/cpp.php
-
/. schrieb:
Konrad Rudolph schrieb:
Ein Beispiel dafür ist http://shootout.alioth.debian.org/. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C.

Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.
Einm Vergleich g++ <-> gcc: http://shootout.alioth.debian.org/gp4/cpp.php
Ja, und? Schau Dir mal die Tabelle darunter an. C++ genauso oft schneller als C wie C schneller ist als C++. Allerdings wurden für diesen Vergleich nicht die alternativen C++-Implementierungen herangezogen, die teilweise viel schneller sind. Wenn man die hinzuzieht, dann ist C++ 8 Mal schneller als C und die anderen Probleme sind nicht praxisrelevant bzw. API-spezifisch, was bedeutet, dass C++ hier mit der geeigneten API genauso schnell wie C wäre.
-
Konrad Rudolph schrieb:
/. schrieb:
Konrad Rudolph schrieb:
Ein Beispiel dafür ist http://shootout.alioth.debian.org/. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C.

Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.
Einm Vergleich g++ <-> gcc: http://shootout.alioth.debian.org/gp4/cpp.php
Ja, und? Schau Dir mal die Tabelle darunter an. C++ genauso oft schneller als C wie C schneller ist als C++. Allerdings wurden für diesen Vergleich nicht die alternativen C++-Implementierungen herangezogen, die teilweise viel schneller sind. Wenn man die hinzuzieht, dann ist C++ 8 Mal schneller als C und die anderen Probleme sind nicht praxisrelevant bzw. API-spezifisch, was bedeutet, dass C++ hier mit der geeigneten API genauso schnell wie C wäre.
Mein Post bezog sich nur auf folgendes Zitat:
Konrad Rudolph schrieb:
C++ scheint doch fast überall schneller zu sein als C.
Das ist nur ca. 3:2 für C++. Aber das ist doch sowieso egal - ich wollte Dir damit nur ein paar Quelltexte geben, die Du für Deine Ausarbeitung verwenden kannst!

Interessant sind eher die Vergleiche zu anderen Sprachen!
-
Ich meine bei der Diskussion um schnell oder nicht wird meist zu sehr mit der Lupe auf Details gesehen, aber das große ganze vergessen. Man kann viele Dinge anführen, dass der Compiler Templates zeit-optimal auflösen kann oder das virtuelle Methodenaufrufe Zeit kosten. Aber hier geht es immer nur um ein paar Prozent schneller oder langsamer.
Wenn man in der Praxis vor dem Problem steht, Programme wirklich schnell machen zu müssen - und ich meine dann Faktor 5, 20 oder gar 100 - dann läuft das im Allgemeinen auf eine völlige Neustrukturierung des Problems hinaus. Aber immer wird die Lösung aufwändiger, weil Dinge parallel laufen, im Vorfeld berechnet werden oder Aufgaben auf Rechner verteilt und die Ergebnisse wieder zusammengeführt werden müssen. Unterm Strich wird der Code dann immer komplexer - teilweise so komplex, dass Programmierer davor zurückschrecken, die anvisierte Lösung zu realisieren. Um diese Komplexität zu stemmen sind immer OO-Techniken und auch häufig Template-Techniken hilfreich.
Ich halte C++ genau deshalb für schnell, weil C++ den Bogen von der maschinennahen Programmierung bis hin zu der Möglichkeit spannt komplexeste Strukturen zu modellieren.Gruß
Werner