<?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[[Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Habe mich gerade gefragt, was wohl schneller (besser) sein würde, wenn man einen grösseren String aus mehreren anderen Strings zusammen setzen möchte.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;sstream&gt;

// a)
std::string foo()
{
    std::stringstream Stream;

    Stream &lt;&lt; &quot;bli bla blu&quot; &lt;&lt; get_string() &lt;&lt; &quot;blu bla&quot;;

    Stream &lt;&lt; get_another_string();

    Stream &lt;&lt; get_a_very_long_string();

    // usw.

    return Stream.str();
}

// b)
std::string foo()
{
    std::string String;

    String += &quot;bli bla blu&quot;;
    String += get_string();
    String += &quot;blu bla&quot;;

    String += get_another_string();

    String += get_a_very_long_string();

    // usw.

    return String;
}

// c) ?
</code></pre>
<p>Ich tendiere eigentlich zu a) nur wegen dem praktischen her. Weil man kann da auch gleich normale Zahlen mit reinnehmen oder irgendwelche locales und facets verändern. Aber gibt es auch einen Unterschied bei der Geschwindigkeit?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204717/performance-stringstream-lt-gt-string-lt-gt-was-anderes</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 19:33:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204717.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Feb 2008 11:27:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 11:27:59 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Habe mich gerade gefragt, was wohl schneller (besser) sein würde, wenn man einen grösseren String aus mehreren anderen Strings zusammen setzen möchte.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;sstream&gt;

// a)
std::string foo()
{
    std::stringstream Stream;

    Stream &lt;&lt; &quot;bli bla blu&quot; &lt;&lt; get_string() &lt;&lt; &quot;blu bla&quot;;

    Stream &lt;&lt; get_another_string();

    Stream &lt;&lt; get_a_very_long_string();

    // usw.

    return Stream.str();
}

// b)
std::string foo()
{
    std::string String;

    String += &quot;bli bla blu&quot;;
    String += get_string();
    String += &quot;blu bla&quot;;

    String += get_another_string();

    String += get_a_very_long_string();

    // usw.

    return String;
}

// c) ?
</code></pre>
<p>Ich tendiere eigentlich zu a) nur wegen dem praktischen her. Weil man kann da auch gleich normale Zahlen mit reinnehmen oder irgendwelche locales und facets verändern. Aber gibt es auch einen Unterschied bei der Geschwindigkeit?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450432</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 11:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 11:29:27 GMT]]></title><description><![CDATA[<p>a.) hat die bessere performance!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450435</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 06 Feb 2008 11:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 11:38:38 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>a.) hat die bessere performance!</p>
</blockquote>
<p>Hast du das ausgiebig getestet? Mit welchem Compiler, welcher Implementation der Standardbibliothek, welchen Optimierungseinstellungen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9752">@Dravere</a>: Ich denke nicht, dass du dir bei sowas schon Gedanken um die Performance machen solltest, eher um Lesbarkeit und Erweiterbarkeit. Performance wird bei solchen Designdetails erst wichtig, wenn dein Profiler dir sagt, dass das Programm viel zeit in der Funktion verbringt - und die Funktion sieht nicht danach aus, es sei denn du machst in dem Programm hauptsächlich Stringmanipulationen.</p>
<p>Vom Aspekt der Leserlichkeit her sehen beide Ansätze sich ja recht ähnlich. Was das Erweitern angeht sieht der erste besser aus, da es einfach ist, beispielsweise auch Zahlen etc. in den Stream zu schicken, wenn sowas später mal dazukommen sollte (auch wenns nicht geplant ist, könnte es ja trotzdem passieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450444</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 06 Feb 2008 11:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 11:52:26 GMT]]></title><description><![CDATA[<p>c) 'weglassen'</p>
<p>die Frage ist doch, wo geht der Riesenstring hin, wenn er fertig ist. Da ich nicht annehme, dass der weiter bearbeitet wird, sondern irgendwann ausgegeben wird (Datei, Konsole, Socket, usw.), ist es doch besser, die Funktionen get_another_string() nach get_another_string( std::ostream&amp; output ) zu ändern, und einen streambuf'er zu kreieren und darunter zu hängen, der die Zeichen gleich da hin schreibt, wo sie hinsollen - ohne jeden Umweg.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450455</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 06 Feb 2008 11:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 11:59:17 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>a.) hat die bessere performance!</p>
</blockquote>
<p>Ist quatsch, was ich geschrieben habe.<br />
Ist auch nicht diffrenziert.<br />
Und es ist nicht mal getestet...</p>
<p>Sorry und Gruss<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450461</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 06 Feb 2008 11:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 12:07:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>,<br />
Ich mache mir auch keine Gedanken um die Geschwindigkeit. Ich hab mir das einfach mal so durch den Kopf gehen lassen und mich dann halt gefragt, was wohl schneller (besser) wäre.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>,<br />
Das erscheint mir allerdings noch eine gute Idee zu sein. Allerdings würde ich es wenn schon anders machen:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;ostream&gt;

std::ostream&amp; foo(std::ostream&amp; OutputStream)
{
    OutputStream &lt;&lt; &quot;bli bla blu&quot; &lt;&lt; get_string() &lt;&lt; &quot;blu bla&quot;;

    OutputStream &lt;&lt; get_another_string();

    OutputStream &lt;&lt; get_a_very_long_string();

    // usw.

    return OutputStream;
}

// Die get_xxx_string Funktionen sehen wahrscheinlich sowieso so aus:
const std::string&amp; get_xxx_string();
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450465</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 12:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 12:11:19 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Die get_xxx_string Funktionen sehen wahrscheinlich sowieso so aus:
const std::string&amp; get_xxx_string();
</code></pre>
</blockquote>
<p>.. wie ist die Implementierung in der Funktion - mit was wird der jeweilige String gefüllt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450472</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 06 Feb 2008 12:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 12:25:15 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Die get_xxx_string Funktionen sehen wahrscheinlich sowieso so aus:
const std::string&amp; get_xxx_string();
</code></pre>
</blockquote>
<p>.. wie ist die Implementierung in der Funktion - mit was wird der jeweilige String gefüllt?</p>
</blockquote>
<p>Ok, ich hätte vielleicht schreiben sollen:</p>
<blockquote>
<p>Wenn der String schon existiert:</p>
<pre><code class="language-cpp">const std::string&amp; get_xxx_string();
</code></pre>
<p>Wenn der String noch konstruiert werden muss:</p>
<pre><code class="language-cpp">std::ostream&amp; get_xxx_string(std::ostream&amp; OutputStream);
</code></pre>
</blockquote>
<p>Die Frage nach der Geschwindigkeit bleibt aber immer noch offen. Weiss da keiner etwas dazu?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450485</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 12:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 12:30:59 GMT]]></title><description><![CDATA[<p>Teste es doch. profiler + ein paar Millionen Durchläufe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450490</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 06 Feb 2008 12:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:00:52 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Teste es doch. profiler + ein paar Millionen Durchläufe...</p>
</blockquote>
<p>Hast du vielleicht auch gleich einen Vorschlag für einen guten Profiler? Da ich die eigentlich nie verwende, kenne ich mich auch nicht so aus, was es gibt, welche gut sind und ob es auch welche gibt, die gratis sind.</p>
<p>Deshalb frage ich ja auch, da vielleicht das jemand schon weiss oder es jemand mit Profiler Erfahrungen auch interessiert <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450580</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:02:43 GMT]]></title><description><![CDATA[<p>Mit dem gcc mit den Optionen -pg kompilieren und das a.out dann mit gprof anzeigen lassen. Ich glaube zumindest das dem so war. Ist schon ein paar Jahre her. <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/1450582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450582</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:05:28 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Teste es doch. profiler + ein paar Millionen Durchläufe...</p>
</blockquote>
<p>Hast du vielleicht auch gleich einen Vorschlag für einen guten Profiler? Da ich die eigentlich nie verwende, kenne ich mich auch nicht so aus, was es gibt, welche gut sind und ob es auch welche gibt, die gratis sind.</p>
<p>Deshalb frage ich ja auch, da vielleicht das jemand schon weiss oder es jemand mit Profiler Erfahrungen auch interessiert <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>Grüssli</p>
</blockquote>
<p>Kommt drauf an was du verwendest, für VS kann ich dir von Compuware den DevPartner empfehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450583</guid><dc:creator><![CDATA[lolz_ausgeloggt]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:16:31 GMT]]></title><description><![CDATA[<p>lolz_ausgeloggt schrieb:</p>
<blockquote>
<p>Kommt drauf an was du verwendest, für VS kann ich dir von Compuware den DevPartner empfehlen.</p>
</blockquote>
<p>Du machst deinem Namen alle Ehre. Sind ja nur etwas über 1'000€, kein Problem.<br />
Ich bin zwar wissbegierig, aber nicht leichtsinnig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17700">@Fellhuhn</a>,<br />
Hmmm, na mal schauen, wann ich Zeit habe mich nochmals in die Kommandozeilen Compiler einzuarbeiten. Bin von IDEs (VS2005) verwöhnt <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>Sonstige Vorschläge? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450592</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:16:31 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:30:03 GMT]]></title><description><![CDATA[<p>Die VS2005 Team Edition hat auch einen eingebauten Profiler.<br />
Sehr komfortabel finde ich.</p>
<p>Edit:<br />
Zudem gibts von Compuware soviel ich weiss eine Community Edition (gratis) die für die meisten Fälle ausreichend ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450599</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 14:33:56 GMT]]></title><description><![CDATA[<p>AMD CodeAnalyst ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450602</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 06 Feb 2008 14:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 15:32:06 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>lolz_ausgeloggt schrieb:</p>
<blockquote>
<p>Kommt drauf an was du verwendest, für VS kann ich dir von Compuware den DevPartner empfehlen.</p>
</blockquote>
<p>Du machst deinem Namen alle Ehre. Sind ja nur etwas über 1'000€, kein Problem.<br />
Ich bin zwar wissbegierig, aber nicht leichtsinnig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17700">@Fellhuhn</a>,<br />
Hmmm, na mal schauen, wann ich Zeit habe mich nochmals in die Kommandozeilen Compiler einzuarbeiten. Bin von IDEs (VS2005) verwöhnt <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>Sonstige Vorschläge? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Grüssli</p>
</blockquote>
<p>Du sollst dir ja auch nicht die Suite kaufen, sondern den Profiler von denen benutzen, den gibts kostenlos. Nennt sich Code Analyzer oder so ähnlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450658</guid><dc:creator><![CDATA[lolz_ausgeloggt]]></dc:creator><pubDate>Wed, 06 Feb 2008 15:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Wed, 06 Feb 2008 15:40:40 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>Die VS2005 Team Edition hat auch einen eingebauten Profiler.<br />
Sehr komfortabel finde ich.</p>
</blockquote>
<p>Das ist wohl in VS2005 Professional nicht vorhanden?</p>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>AMD CodeAnalyst ...</p>
</blockquote>
<p>Ist aber nur für AMDs. Hab aber Intel ^^&quot;</p>
<p>simon.gysi schrieb:</p>
<blockquote>
<p>Zudem gibts von Compuware soviel ich weiss eine Community Edition (gratis) die für die meisten Fälle ausreichend ist.</p>
</blockquote>
<p>Ich habe jetzt sicher die Seite 5 Mal angeschaut und habe es immer überlesen. Erst als ich die letzte Vorschau gemacht habe und dann den neuen Beitrag von lolz gelesen habe, bin ich noch ein sechstes Mal schauen gegangen und hab es gefunden.<br />
hwups <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Falls Leute drauf stossen:<br />
<a href="http://www.compuware.com/products/devpartner/profiler/default.asp?cid=701000000004ej0AAA&amp;focus=&amp;productfocus=&amp;source=Web+-+Evaluation+Request&amp;offering=DevPartner&amp;productfamily=DevPartner&amp;desc=The+DevPartner+Community+Profiler+Edition+is+a+product+download+that+offers+customers+and+prospects+a+high-level+view+of+the+performance+profiling+capabilities+of+DevPartner+Studio+Professional+Edition.&amp;trk=200601-74" rel="nofollow">http://www.compuware.com/products/devpartner/profiler/default.asp?cid=701000000004ej0AAA&amp;focus=&amp;productfocus=&amp;source=Web+-+Evaluation+Request&amp;offering=DevPartner&amp;productfamily=DevPartner&amp;desc=The+DevPartner+Community+Profiler+Edition+is+a+product+download+that+offers+customers+and+prospects+a+high-level+view+of+the+performance+profiling+capabilities+of+DevPartner+Studio+Professional+Edition.&amp;trk=200601-74</a><br />
(Was für eine URL ^^)</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450668</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 Feb 2008 15:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Thu, 07 Feb 2008 01:22:27 GMT]]></title><description><![CDATA[<p>Ich habe jetzt das Teil runtergeladen und installiert und dabei eine interessante Entdeckung gemacht.<br />
Das folgende war mein Test:</p>
<pre><code class="language-cpp">std::string functionOne()
{
    std::string strReturn;

    strReturn += &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    strReturn += &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;

    strReturn += &quot;0987654321&quot;;
    strReturn += &quot;0987654321&quot;;

    strReturn += &quot;1234567890&quot;;
    strReturn += &quot;1234567890&quot;;

    return strReturn;
}

std::string functionTwo()
{
    std::stringstream StringStream;

    StringStream &lt;&lt; &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot; &lt;&lt; &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    StringStream &lt;&lt; &quot;0987654321&quot; &lt;&lt; &quot;0987654321&quot;;
    StringStream &lt;&lt; &quot;1234567890&quot; &lt;&lt; &quot;1234567890&quot;;

    return StringStream.str();
}

std::ostream&amp; functionThree(std::ostream&amp; OutputStream)
{
    OutputStream &lt;&lt; &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot; &lt;&lt; &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    OutputStream &lt;&lt; &quot;0987654321&quot; &lt;&lt; &quot;0987654321&quot;;
    OutputStream &lt;&lt; &quot;1234567890&quot; &lt;&lt; &quot;1234567890&quot;;

    return OutputStream;
}

void testOne()
{
    for(int i = 0; i &lt; 100000; ++i)
    { functionOne(); }
}

void testTwo()
{
    for(int i = 0; i &lt; 100000; ++i)
    { functionTwo(); }
}

void testThree()
{
    std::stringstream StringStream;

    for(int i = 0; i &lt; 100000; ++i)
    { functionThree(StringStream); }
}

int main()
{
    testOne();

    testTwo();

    testThree();

    return 0;
}
</code></pre>
<p>Ohne Optimierungen:<br />
functionOne hat im Durchschnitt 2.2 Mikrosekunden benötigt.<br />
functionTwo hat im Durchschnitt 16.5 Mikrosekunden benötigt.<br />
functionThree hat im Durchschnitt 15.8 Mikrosekunden benötigt.</p>
<p>Mit Optimierungen:<br />
functionOne hat im Durchschnitt 2.5 Mirkosekunden benötigt.<br />
functionTwo hat im Durchschnitt 7.4 Mirkosekunden benötigt.<br />
functionThree hat im Durchschnitt 6.8 Mikrosekunden benötigt.</p>
<p>Vor allem hätte ich nicht gedacht, dass das += von std::string so viel schneller ist als die Streams. Aber wenn ich so weiter überlege, macht das wohl durchaus Sinn, weil beim Stream die ganze Zeit noch die locales checks dazukommen und anderes. Trotzdem hätte ich nicht gedacht, dass der Unterschied so extrem ist.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450962</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 07 Feb 2008 01:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Thu, 07 Feb 2008 15:31:18 GMT]]></title><description><![CDATA[<p>Jetzt noch den String nicht dauernt kopieren und dein Code ist sogar noch wesentlich schneller! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">void functionOne(std::string&amp; dest)
{
    dest = &quot;&quot;;
    dest += &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    dest += &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    dest += &quot;0987654321&quot;;
    dest += &quot;0987654321&quot;;
    dest += &quot;1234567890&quot;;
    dest += &quot;1234567890&quot;;
}

void testOne()
{
    std::string result;

    for (std::size_t i(0); i &lt; 100000; ++i)
        functionOne(result);
}
</code></pre>
<p><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/1451307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451307</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 07 Feb 2008 15:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Performance] stringstream &amp;lt;-&amp;gt; string &amp;lt;-&amp;gt; was anderes on Thu, 07 Feb 2008 15:34:51 GMT]]></title><description><![CDATA[<p>'Die VS2005 Team Edition hat auch einen eingebauten Profiler.<br />
Sehr komfortabel finde ich.'</p>
<p>Bevor wieder was kommt - joar, bei 2005 prof. wahrscheinlich auch - aber die Team Edition gibts (oder gab es zumindest mal) für 180 Tage kostenlos auf der ms-site zum download... Ich hab mal von einem gehört, dass man in dem image nur 2 *.dll`s verändern muss (also runterladen und ersetzen) und es eine Vollversion wird - aber dazu kann ich dir <strong>natürlich</strong> nix sagen ;o)</p>
<p>Ich kann dir auch nur VS empfehlen...</p>
<p>bb ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451308</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 07 Feb 2008 15:34:51 GMT</pubDate></item></channel></rss>