<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Die Geschwindigkeit von C++]]></title><description><![CDATA[<p>Hallo,</p>
<p>in Folge einer Diskussion in einem anderen (nicht-C++-)Forum habe ich versucht zu begründen, wieso C++ denn nun schneller als die meisten anderen Sprachen ist. Daraus ist letztendlich eine Kolumne geworden.</p>
<p>Bevor diese veröffentlicht wird, wäre es mir aber lieb, wenn nochmal jemand mit Ahnung darüberschauen könnte, was ich da so zusammengetragen habe. Viele der Dinge, die dort stehen, sind nämlich zumindest indirekt oder teilweise basierend auf Diskussionen aus diesem Forum hier.</p>
<p>Mir ist klar, dass die Kolumne weit entfernt von Perfektion ist aber wie gesagt ist sie aus einer Forendiskussion entstanden und zum großartigen Umschreiben fehlt mir die Zeit. Ich würde euch den Inhalt auch gerne zur Verfügung stellen (immerhin besitzt das Board / die Seite eine eigene Artikel-Sammlung, und es ist ja schon ein wenig dreist, in diesem Forum einfach darum zu bitten, meine Veröffentlichung zu &quot;korrigieren&quot;) aber dafür ist dieser Text einfach nicht gut genug recherchiert. Ich bitte daher einfach, meine Dreistigkeit zu verzeihen.</p>
<p>Der Text ist relativ lang (für einen Forenbeitrag), es wäre mir trotzdem lieb, wenn das der/die eine oder andere von euch mal überfliegen könnte (muss nicht gründlich sein).</p>
<p>Ich gebe also in Folge einfach mal meine Gründe an, wie sie in der Kolumne aufgeführt sind:</p>
<ul>
<li>C++ existiert seit 1985 und basiert auf dem noch älteren C. Im Gegensatz zu z.B. VB wurden Compiler ständig erweitert und mit dem Wissen älterer Modelle erneuert. Aufgrund der industriellen Verbreitung von C/C++ lag teilweise ein enormer Druck auf den Compilerbauern (die oft dieselben wie die Anwender von C++ waren), die Geschwindigkeit zu verbessern. C++ ist daher heutzutage einer der Compiler, in die am meisten Know-How geflossen ist und die am besten optimieren, geschlagen vielleicht nur von Fortran- und Scheme-Compilern. (Hier kann man mir leicht einen Strick draus drehen. Viele andere Compiler und Interpreter optimieren sehr gut, vor allem auch Smalltalk. Aber es bleibt meistens dabei, dass im Endeffekt in Reallife-Anwendungen das C++-Resultat das schnellste ist.)</li>
<li>C++ ist eine strikt standardisierte Sprache. Diese Standardisierung erlaubt teilweise rigorose Annahmen über die Semantik des Codes, die ausgenutzt werden können, um überflüssige Aufrufe wegzuoptimieren. C++’ Syntax ist zudem dermaßen dynamisch, dass viele der Tricks, die heute zum guten Ton in C++ gehören, erst nachträglich entdeckt wurden und ständig verbessert wurden. Dadurch wurden eine Menge trickreicher Mechanismen hervorgebracht, die Sprachmerkmale für die Optimierung ausnutzen.</li>
<li>Das Schlüsselwort const. const ist sehr viel weitreichender als final in Java und ReadOnly in VB/C#. Durch const-correctness sind extrem rabiate Optimierungen möglich, da der Compiler sichergehen kann, dass gewisse Schreib-Operationen nie auftreten können. Tun sie es doch (was nur durch ein explizites const_cast geht, was gewissermaßen ein rotes Warnsignal im Code ist), ist der Programmierer schuld und das Programm geht spektakulär flöten.</li>
<li>C++-Compiler inlinen sehr gut. Ich habe bereits erwähnt, dass C++-Compiler gut optimieren aber das Inlining muss hier speziell hervorgehoben werden, denn das machen C++-Compiler so gut, dass äquivalente Codes in C++ schneller sein können als in C, allein aus dem Grund, dass der C++-Compiler indirekte Aufrufe inlinen kann, die in C++ als Funktoren implementiert sind und in C als Funktionszeiger.</li>
<li>Das geht natürlich nur wegen der Operatorenüberladung des ()-Operators in C++, der Klassen erlaubt, die sich wie Funktionszeiger verhalten, all deren Vorteile aber nicht deren Nachteile (Indirektion und damit Geschwindigkeitsverlust) haben.</li>
<li>C++ ist nicht vollständig objektorientiert im klassischen Smalltalk-Sinn (sehr wohl aber in dem Sinn, dass in der STL alles über Objekte ausgedrückt wird). OO an sich ist oft sehr langsam, da virtuelle Methodenaufrufe und Referenzobjekte verwendet werden müssen, um OO-Techniken wie Laufzeitpolymorphsmus zu verwenden. Da führt kein Weg drumherum, auch in C++ nicht, aber C++ verwendet nur in kleinen Teilen OO. Meistens erstellt man auch keine Zeiger auf Objekte sondern konkrete Objekte. Laufzeit-Polymorphismus wird durch die Templates in sehr vielen Fällen in Compilezeit-Polymorphismus umgewandelt. Das ganze geht so weit, dass ich persönlich in C++ kaum mit Zeigern arbeite. Ich kenne an der Uni viele Programmierer, die das nicht glauben wollen (Na ja, das sind C-Leute aus der Unix-Welt …) aber viele hochkarätige C++-Programmierer machen es vor.</li>
<li>Die Templates. .NET besitzt Generics aber C++’ Templates sind einfach viel schneller. Das hat verschiedene technische Gründe und dadurch entstehen nicht nur Vorteile: Die Templates sind der Grund dafür, dass es keine guten C++-IDEs gibt: Für guten IntelliSense und gutes Refactoring muss der Code im Hintergrund kompiliert und analysiert werden und das ist mit Templates einfach nicht machbar, weil die Auswertung hier einfach zu langsam ist. Aber auf der Plus-Seite bedeuten Templates, dass man Code auf einer sehr hohen Abstraktionsebene schreiben kann, der Compiler diesen Code aber vollautomatisch in Low-Level-Befehle verwandelt, die nicht einmal mehr großer Optimierung bedürfen, da sie bereits konkretisiert sind.</li>
<li>Die Standard-Bibliothek. Ich habe sie in meiner Aufzählung bis zum Schluss gelassen, aber die STL (und die Boost-Bibliothek) ist wohl der Hauptgrund dafür, dass C++ im (relevanten) Normalfall schneller ist als C – und damit wohl schneller als alle existierenden Hochsprachen. Die STL wurde mit dem Augenmerk „Effizienz“ (mit gleichzeitiger extrem hoher Wiederverwendbarkeit) designed. Das allein unterschiedet sie von den meisten Bibliotheken. In .NET z.B. wurden viele Klassen extrem effizient implementiert (die List-Klasse z.B. ist mit eigenem Code nicht zu schlagen!) – aber es fehlt ein schlüssiges Gesamtkonzept. In .NET sind viele Klassen für sich genommen schnell aber sobald man Daten von einem Algorithmus in den nächsten überführt, entstehen Flaschenhälse, die der Compiler nicht weg-optimieren kann. In C++ ist das Gegenteil der Fall. Hier wurde auf eine enge Verzahnung der verschiedenen Klassen geachtet, die es erlaubt, Werte ohne Flaschenhälse von einem logischen Schritt in den nächsten zu überführen. Und selbst diese Überführung kann häufig vollkommen weg-optimiert werden.</li>
</ul>
<p>Zum Punkt &quot;Compiler inlinen gut&quot;: Der Vergleich mit C stammt von Stroustrup, der in einem Aufsatz feststellt, dass ein guter C++-Compiler es hinbekommt, den Kleiner-Vergleich in einer Sortierfunktion zu inlinen und deswegen schneller als das C-Äquivalent qsort ist, da hier eine virtuelle Funktion aufgerufen werden muss.<br />
Da ich aber für den Rest der Behauptungen keine Quellenangaben habe, habe ich die Quellenangabe hier ebenfalls weggelassen.<br />
zum Punkt &quot;const-correctness&quot;: Was ich hier meine ist, dass man &quot;sorgenfrei&quot; Referenzen übergeben kann statt teure Kopieroperationen durchführen zu müssen.</p>
<p>/EDIT: Mir ist bewusst, dass der Artikel einen Idealfall beschreibt und dass unterschiedliche Compiler sehr unterschiedlich gut optimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166029/die-geschwindigkeit-von-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 05:27:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166029.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Nov 2006 13:46:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 13:48:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in Folge einer Diskussion in einem anderen (nicht-C++-)Forum habe ich versucht zu begründen, wieso C++ denn nun schneller als die meisten anderen Sprachen ist. Daraus ist letztendlich eine Kolumne geworden.</p>
<p>Bevor diese veröffentlicht wird, wäre es mir aber lieb, wenn nochmal jemand mit Ahnung darüberschauen könnte, was ich da so zusammengetragen habe. Viele der Dinge, die dort stehen, sind nämlich zumindest indirekt oder teilweise basierend auf Diskussionen aus diesem Forum hier.</p>
<p>Mir ist klar, dass die Kolumne weit entfernt von Perfektion ist aber wie gesagt ist sie aus einer Forendiskussion entstanden und zum großartigen Umschreiben fehlt mir die Zeit. Ich würde euch den Inhalt auch gerne zur Verfügung stellen (immerhin besitzt das Board / die Seite eine eigene Artikel-Sammlung, und es ist ja schon ein wenig dreist, in diesem Forum einfach darum zu bitten, meine Veröffentlichung zu &quot;korrigieren&quot;) aber dafür ist dieser Text einfach nicht gut genug recherchiert. Ich bitte daher einfach, meine Dreistigkeit zu verzeihen.</p>
<p>Der Text ist relativ lang (für einen Forenbeitrag), es wäre mir trotzdem lieb, wenn das der/die eine oder andere von euch mal überfliegen könnte (muss nicht gründlich sein).</p>
<p>Ich gebe also in Folge einfach mal meine Gründe an, wie sie in der Kolumne aufgeführt sind:</p>
<ul>
<li>C++ existiert seit 1985 und basiert auf dem noch älteren C. Im Gegensatz zu z.B. VB wurden Compiler ständig erweitert und mit dem Wissen älterer Modelle erneuert. Aufgrund der industriellen Verbreitung von C/C++ lag teilweise ein enormer Druck auf den Compilerbauern (die oft dieselben wie die Anwender von C++ waren), die Geschwindigkeit zu verbessern. C++ ist daher heutzutage einer der Compiler, in die am meisten Know-How geflossen ist und die am besten optimieren, geschlagen vielleicht nur von Fortran- und Scheme-Compilern. (Hier kann man mir leicht einen Strick draus drehen. Viele andere Compiler und Interpreter optimieren sehr gut, vor allem auch Smalltalk. Aber es bleibt meistens dabei, dass im Endeffekt in Reallife-Anwendungen das C++-Resultat das schnellste ist.)</li>
<li>C++ ist eine strikt standardisierte Sprache. Diese Standardisierung erlaubt teilweise rigorose Annahmen über die Semantik des Codes, die ausgenutzt werden können, um überflüssige Aufrufe wegzuoptimieren. C++’ Syntax ist zudem dermaßen dynamisch, dass viele der Tricks, die heute zum guten Ton in C++ gehören, erst nachträglich entdeckt wurden und ständig verbessert wurden. Dadurch wurden eine Menge trickreicher Mechanismen hervorgebracht, die Sprachmerkmale für die Optimierung ausnutzen.</li>
<li>Das Schlüsselwort const. const ist sehr viel weitreichender als final in Java und ReadOnly in VB/C#. Durch const-correctness sind extrem rabiate Optimierungen möglich, da der Compiler sichergehen kann, dass gewisse Schreib-Operationen nie auftreten können. Tun sie es doch (was nur durch ein explizites const_cast geht, was gewissermaßen ein rotes Warnsignal im Code ist), ist der Programmierer schuld und das Programm geht spektakulär flöten.</li>
<li>C++-Compiler inlinen sehr gut. Ich habe bereits erwähnt, dass C++-Compiler gut optimieren aber das Inlining muss hier speziell hervorgehoben werden, denn das machen C++-Compiler so gut, dass äquivalente Codes in C++ schneller sein können als in C, allein aus dem Grund, dass der C++-Compiler indirekte Aufrufe inlinen kann, die in C++ als Funktoren implementiert sind und in C als Funktionszeiger.</li>
<li>Das geht natürlich nur wegen der Operatorenüberladung des ()-Operators in C++, der Klassen erlaubt, die sich wie Funktionszeiger verhalten, all deren Vorteile aber nicht deren Nachteile (Indirektion und damit Geschwindigkeitsverlust) haben.</li>
<li>C++ ist nicht vollständig objektorientiert im klassischen Smalltalk-Sinn (sehr wohl aber in dem Sinn, dass in der STL alles über Objekte ausgedrückt wird). OO an sich ist oft sehr langsam, da virtuelle Methodenaufrufe und Referenzobjekte verwendet werden müssen, um OO-Techniken wie Laufzeitpolymorphsmus zu verwenden. Da führt kein Weg drumherum, auch in C++ nicht, aber C++ verwendet nur in kleinen Teilen OO. Meistens erstellt man auch keine Zeiger auf Objekte sondern konkrete Objekte. Laufzeit-Polymorphismus wird durch die Templates in sehr vielen Fällen in Compilezeit-Polymorphismus umgewandelt. Das ganze geht so weit, dass ich persönlich in C++ kaum mit Zeigern arbeite. Ich kenne an der Uni viele Programmierer, die das nicht glauben wollen (Na ja, das sind C-Leute aus der Unix-Welt …) aber viele hochkarätige C++-Programmierer machen es vor.</li>
<li>Die Templates. .NET besitzt Generics aber C++’ Templates sind einfach viel schneller. Das hat verschiedene technische Gründe und dadurch entstehen nicht nur Vorteile: Die Templates sind der Grund dafür, dass es keine guten C++-IDEs gibt: Für guten IntelliSense und gutes Refactoring muss der Code im Hintergrund kompiliert und analysiert werden und das ist mit Templates einfach nicht machbar, weil die Auswertung hier einfach zu langsam ist. Aber auf der Plus-Seite bedeuten Templates, dass man Code auf einer sehr hohen Abstraktionsebene schreiben kann, der Compiler diesen Code aber vollautomatisch in Low-Level-Befehle verwandelt, die nicht einmal mehr großer Optimierung bedürfen, da sie bereits konkretisiert sind.</li>
<li>Die Standard-Bibliothek. Ich habe sie in meiner Aufzählung bis zum Schluss gelassen, aber die STL (und die Boost-Bibliothek) ist wohl der Hauptgrund dafür, dass C++ im (relevanten) Normalfall schneller ist als C – und damit wohl schneller als alle existierenden Hochsprachen. Die STL wurde mit dem Augenmerk „Effizienz“ (mit gleichzeitiger extrem hoher Wiederverwendbarkeit) designed. Das allein unterschiedet sie von den meisten Bibliotheken. In .NET z.B. wurden viele Klassen extrem effizient implementiert (die List-Klasse z.B. ist mit eigenem Code nicht zu schlagen!) – aber es fehlt ein schlüssiges Gesamtkonzept. In .NET sind viele Klassen für sich genommen schnell aber sobald man Daten von einem Algorithmus in den nächsten überführt, entstehen Flaschenhälse, die der Compiler nicht weg-optimieren kann. In C++ ist das Gegenteil der Fall. Hier wurde auf eine enge Verzahnung der verschiedenen Klassen geachtet, die es erlaubt, Werte ohne Flaschenhälse von einem logischen Schritt in den nächsten zu überführen. Und selbst diese Überführung kann häufig vollkommen weg-optimiert werden.</li>
</ul>
<p>Zum Punkt &quot;Compiler inlinen gut&quot;: Der Vergleich mit C stammt von Stroustrup, der in einem Aufsatz feststellt, dass ein guter C++-Compiler es hinbekommt, den Kleiner-Vergleich in einer Sortierfunktion zu inlinen und deswegen schneller als das C-Äquivalent qsort ist, da hier eine virtuelle Funktion aufgerufen werden muss.<br />
Da ich aber für den Rest der Behauptungen keine Quellenangaben habe, habe ich die Quellenangabe hier ebenfalls weggelassen.<br />
zum Punkt &quot;const-correctness&quot;: Was ich hier meine ist, dass man &quot;sorgenfrei&quot; Referenzen übergeben kann statt teure Kopieroperationen durchführen zu müssen.</p>
<p>/EDIT: Mir ist bewusst, dass der Artikel einen Idealfall beschreibt und dass unterschiedliche Compiler sehr unterschiedlich gut optimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181230</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 25 Nov 2006 13:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:00:01 GMT]]></title><description><![CDATA[<p>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.</p>
<p>Gruss Jerry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181238</guid><dc:creator><![CDATA[jerry]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:02:00 GMT]]></title><description><![CDATA[<p>jerry schrieb:</p>
<blockquote>
<p>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.</p>
</blockquote>
<p>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.</p>
<p>Trotzdem Danke für den Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181242</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:06:06 GMT]]></title><description><![CDATA[<p>Da verweise ich aber ganz gehässig auf deinen ersten Satz: ..wieso C++ schneller als die meisten anderen Sprachen ist. Willst Du einen veralbern?</p>
<p>Gruss Jerry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181244</guid><dc:creator><![CDATA[jerry]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:10:42 GMT]]></title><description><![CDATA[<p>jerry schrieb:</p>
<blockquote>
<p>Da verweise ich aber ganz gehässig auf deinen ersten Satz: ..wieso C++ schneller als die meisten anderen Sprachen ist. Willst Du einen veralbern?</p>
</blockquote>
<p>Da hast Du natürlich recht. In der Kolumne ist das anders formuliert.</p>
<p>PS: Ich sehe alles doppelt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181246</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:18:53 GMT]]></title><description><![CDATA[<p>jerry schrieb:</p>
<blockquote>
<p>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.</p>
<p>Gruss Jerry</p>
</blockquote>
<p>jerry schrieb:</p>
<blockquote>
<p>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.</p>
<p>Gruss Jerry</p>
</blockquote>
<p>Das sind ja gleich zwei Argumente. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181250</guid><dc:creator><![CDATA[Double]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:25:58 GMT]]></title><description><![CDATA[<p>Ihr habt ja recht, ich kann auch bis zwei zählen - hab aber nur einmal auf &lt;absenden&gt; gedrückt !!</p>
<p>Jerry :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181251</guid><dc:creator><![CDATA[jerry]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:34:23 GMT]]></title><description><![CDATA[<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.</p>
<p>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!</p>
<p>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 <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a>. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181258</guid><dc:creator><![CDATA[&#x2F;.]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 14:47:54 GMT]]></title><description><![CDATA[<p>/. schrieb:</p>
<blockquote>
<p>Das gleiche gilt für die STL. Woher kommen Deine Annahmen die STL sei schneller als äquivalente Implementierungen in C?</p>
</blockquote>
<p>Dieser Satz muss geändert werden, da hast Du recht.</p>
<blockquote>
<p>Ein Beispiel dafür ist <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a>. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181265</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 25 Nov 2006 14:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 15:01:39 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<blockquote>
<p>Ein Beispiel dafür ist <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a>. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.</p>
</blockquote>
<p>Einm Vergleich g++ &lt;-&gt; gcc: <a href="http://shootout.alioth.debian.org/gp4/cpp.php" rel="nofollow">http://shootout.alioth.debian.org/gp4/cpp.php</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181269</guid><dc:creator><![CDATA[&#x2F;.]]></dc:creator><pubDate>Sat, 25 Nov 2006 15:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 15:14:54 GMT]]></title><description><![CDATA[<p>/. schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<blockquote>
<p>Ein Beispiel dafür ist <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a>. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.</p>
</blockquote>
<p>Einm Vergleich g++ &lt;-&gt; gcc: <a href="http://shootout.alioth.debian.org/gp4/cpp.php" rel="nofollow">http://shootout.alioth.debian.org/gp4/cpp.php</a></p>
</blockquote>
<p>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.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181273</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 25 Nov 2006 15:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sat, 25 Nov 2006 15:28:49 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>/. schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<blockquote>
<p>Ein Beispiel dafür ist <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a>. Du kannst natürlich auch die Ergebnisse von dem Link mit einbauen, nur hinken dann Deine Vergleiche mit C. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Hmm ... kann ich nicht nachvollziehen. C++ scheint doch fast überall schneller zu sein als C. Abgesehen davon sind wenige der dortigen Codes praxisrelevant.</p>
</blockquote>
<p>Einm Vergleich g++ &lt;-&gt; gcc: <a href="http://shootout.alioth.debian.org/gp4/cpp.php" rel="nofollow">http://shootout.alioth.debian.org/gp4/cpp.php</a></p>
</blockquote>
<p>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.</p>
</blockquote>
<p>Mein Post bezog sich nur auf folgendes Zitat:</p>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>C++ scheint doch fast überall schneller zu sein als C.</p>
</blockquote>
<p>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! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Interessant sind eher die Vergleiche zu anderen Sprachen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181279</guid><dc:creator><![CDATA[&#x2F;.]]></dc:creator><pubDate>Sat, 25 Nov 2006 15:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to Die Geschwindigkeit von C++ on Sun, 26 Nov 2006 21:05:20 GMT]]></title><description><![CDATA[<p>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.<br />
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.<br />
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.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181919</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 26 Nov 2006 21:05:20 GMT</pubDate></item></channel></rss>