C vs C++

Post Reply
Message
Author
axeljaeger

C vs C++

#1 Post by axeljaeger »

ist ein Programm, das in reinem C geschrieben ist, schneller, als ein äquivalentes C++ Programm?

Descartes

Re: C vs C++

#2 Post by Descartes »

lies dir mal diesen Thread durch ("Einen String umdrehen")
<a href="http://www.pl-forum.de/cgi-bin/UltraBoa ... 4&Post=250" target="_blank"><!--auto-->http://www.pl-forum.de/cgi-bin/UltraBoa ... <!--auto-->

im 4.-letzten Posting von unten ist eine ASCII Grafik das die Laufzeiten darstellt.
Es werden drei Versionen (C++ mit inline/template; C++ Version eines C Proggies; C Programm) ein und der selben Funktion (String umdrehen) verglichen.

Vielleicht nicht allgemeingültig aber für diesen einen Anwendungsfall doch ganz überraschend, dass die C++ Version mit inline/templates laufzeittechnisch ein "stabileres" Verhalten zeigte als die reine C Version.

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: C vs C++

#3 Post by bakunin »

Hi!

> ist ein Programm, das in reinem C geschrieben ist, schneller, als ein äquivalentes C++ Programm?

Der C-Standard schreibt keine bestimmte Geschwindigkeit vor. Der C++-Standard im Moment auch nicht. *eg* Die Frage ist daher schon falsch gestellt. Welches Programm schneller ist, hängt vom konkreten Programm und dem konkreten Compiler ab.

Cheers,
GNU/Wolfgang

PS: Mein Lieblingslink zu C++: <a href="http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3/" target="_blank"><!--auto-->http://www.progsoc.uts.edu.au/~geldridg ... <!--auto-->

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: C vs C++

#4 Post by hjb »

Hi,

wie das Beispiels der Strings zeigt, kann C++ effizienter sein als C. Dahinter steckt natürlich das Prinzip der Lazy Evaluation, aber es gibt natürlich keinen Grund, das in C nicht genauso zu machen.

Es gibt zweifellos einen gewissen Overhead bei C++, insbesondere bei virtuellen Funktionen und bei "verborgenen" Konstruktor- und Destruktoraufrufen von temporären Objekten. Das dürfte zwischen 0 und 5% Zeit kosten.

Ganz übel kann es aussehen, wenn man Exceptions verwendet. Das kann nach Scott Meyers um die 10% kosten. Es scheint wenig empfehlenswert sein, überhaupt Exceptions einzusetzen.

Wenn man überhaupt keine Klassen verwendet, ist die Performance von C und C++ exakt gleich.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

axeljaeger

Re: C vs C++

#5 Post by axeljaeger »

Ich wollte eigentlich wissen, ob es evtl. schneller ist, keine Klassen, sondern Strukturen zu verwenden, und statdessen die Methoden, die eigentlich in der Klasse wären auszulagern.

Michael Zwick

Re: C vs C++

#6 Post by Michael Zwick »

@axeljaeger

Du wirst jetzt bestimmt den Kopf schütteln, aber es stimmt:
Eine Struktur (struct) ist auch so etwas wie eine Klasse (class). In beidem kannst du Methoden und Attribute public, private und protected deklarieren.
Der einzige Unterschied zwischen struct und class zeigt sich beim Vererben.
Wenn du du eine class vererbst, so wird standardmässig private vererbt.
Wenn du einen struct vererbst, wir standardmässig public vererbt. Das ist alles.

Du kannst also in structs auch Methoden schreiben, ehrlich!!!!
Deshalb ist es unerheblich, ob du Klassen oder Strukturen verwendest. Du gewinnst kein bisschen Geschwindigkeit dadurch.

Gruss Michael

axeljaeger

Re: C vs C++

#7 Post by axeljaeger »

Was ist dann der Unterschied zwischen C++ und C, wenn man einfach ein kleines Skript schreibt, das "struct" durch "class" ersetzt? Ich hab mal gehört, das einzig wirklich neue an C++ sind Konstruktoren. Das Thema hatte mich nur interessiert, weil es mal in der Chip zu Evolution hies: "Das Programm läuft angenehm schnell, das es in großen Teilen in C geschreiben ist"

Labba

Re: C vs C++

#8 Post by Labba »

In solchen Zeitschriften aka "Chip" wird größtenteils nicht zwischen C/C++ unterschieden, sondern veralgemeinert.

axeljaeger

Re: C vs C++

#9 Post by axeljaeger »

die haben also nicht zwischen C und C++ unterschieden, sondern zwischen anderen Programmiersprachen und C/C++, wie etwa Java oder ähnliches?

arni

Re: C vs C++

#10 Post by arni »

C++ hat natürlich noch einige andere Zusätze zu "C" z.B. das man auch Referenzen anstelle von Zeigern nutzen kann.
Entscheidend ist aber vielmehr das der Compiler auch eine genaue Typenprüfung vornehmen kann, was bei OO unter C (mit generischen Zeigern) nicht machbar ist.
In Sachen Performance nehmen sich aber C und C++ nichts (soweit man keine Klassen verwendet).
Inwieweit der höhere "Komfort" bei C++-Klassen einen Performanceverlust rechtfertigt, kann Wolfgang am besten erklären ;-P

Post Reply