<?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[langsames cout; performance test und programmabruch...]]></title><description><![CDATA[<p>ich habe mal folgende schleife:</p>
<pre><code class="language-cpp">char *ret_str(int *array, size_t ln)
{
	char *cstring = new char[16];

	for(int i = ln; i &gt; 0; i--)
		cstring[ln-i] = ret_char(array[i-1]);

	return cstring;
	delete [] cstring;
}

void get_nmb(int limes, char* str)
{
	size_t ln = strlen(str);
	char *cstring;
	int array[ln];

	for(int i = 0; i &lt; ln; i++)
		array[i] = 0;

	while (time (0) &lt;= stamp);  // Aktuelle Sekunde fertig abwarten
	while(true/*time (0) &lt;= stamp + 1*/)
	{
	std_ops++;

		cstring = ret_str(array, ln);
		//cout&lt;&lt;&quot;vergleiche: &quot;&lt;&lt;cstring&lt;&lt;&quot; mit string: &quot;&lt;&lt;str&lt;&lt;endl;

		if(strcmp(cstring, str) == 0)		//funktion beenden wenn passwd übereinstimmt
		{
			cout&lt;&lt;&quot;gefunden: &quot;&lt;&lt;cstring&lt;&lt;endl;
			break;
		}

		int i = 0;
		for(; array[i] == limes; ++i)		//rücksetzen der ziffern
		{
			array[i] = 0;
		}
		++array[i];
	}
}
</code></pre>
<p>ich habe die erfahrung gemacht, dass wenn ich</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;vergleiche: &quot;&lt;&lt;cstring&lt;&lt;&quot; mit string: &quot;&lt;&lt;str&lt;&lt;endl;
</code></pre>
<p>auskommentiere, dass programm satte 7-8x schneller läuft^^ das erinnert mich an meinem grafischen tr der auch langsamer lief je mehr er ausgeben musste LOL</p>
<p>naja nun zu meinem problem: wenn ich das cout auskommentiere dass läuft das prog bei längeren ln (&gt;5) ne weile, der rechner wird ziemlich lahm, also der mauszeiger ruckelt und nach ca 30s bricht das programm ab.</p>
<pre><code>terminate called after throwing an instance of 'St9bad_alloc'
  what():  St9bad_alloc
/bin/sh: line 1: 16919 Abgebrochen             ./testchecker
Betätigen Sie die Eingabetaste, um fortzufahren!
</code></pre>
<p>warum bricht das prog ab? kann ich eine ausgabe machen, die schneller als die bisherige ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183345/langsames-cout-performance-test-und-programmabruch</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 06:23:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183345.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Jun 2007 09:50:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 09:50:09 GMT]]></title><description><![CDATA[<p>ich habe mal folgende schleife:</p>
<pre><code class="language-cpp">char *ret_str(int *array, size_t ln)
{
	char *cstring = new char[16];

	for(int i = ln; i &gt; 0; i--)
		cstring[ln-i] = ret_char(array[i-1]);

	return cstring;
	delete [] cstring;
}

void get_nmb(int limes, char* str)
{
	size_t ln = strlen(str);
	char *cstring;
	int array[ln];

	for(int i = 0; i &lt; ln; i++)
		array[i] = 0;

	while (time (0) &lt;= stamp);  // Aktuelle Sekunde fertig abwarten
	while(true/*time (0) &lt;= stamp + 1*/)
	{
	std_ops++;

		cstring = ret_str(array, ln);
		//cout&lt;&lt;&quot;vergleiche: &quot;&lt;&lt;cstring&lt;&lt;&quot; mit string: &quot;&lt;&lt;str&lt;&lt;endl;

		if(strcmp(cstring, str) == 0)		//funktion beenden wenn passwd übereinstimmt
		{
			cout&lt;&lt;&quot;gefunden: &quot;&lt;&lt;cstring&lt;&lt;endl;
			break;
		}

		int i = 0;
		for(; array[i] == limes; ++i)		//rücksetzen der ziffern
		{
			array[i] = 0;
		}
		++array[i];
	}
}
</code></pre>
<p>ich habe die erfahrung gemacht, dass wenn ich</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;vergleiche: &quot;&lt;&lt;cstring&lt;&lt;&quot; mit string: &quot;&lt;&lt;str&lt;&lt;endl;
</code></pre>
<p>auskommentiere, dass programm satte 7-8x schneller läuft^^ das erinnert mich an meinem grafischen tr der auch langsamer lief je mehr er ausgeben musste LOL</p>
<p>naja nun zu meinem problem: wenn ich das cout auskommentiere dass läuft das prog bei längeren ln (&gt;5) ne weile, der rechner wird ziemlich lahm, also der mauszeiger ruckelt und nach ca 30s bricht das programm ab.</p>
<pre><code>terminate called after throwing an instance of 'St9bad_alloc'
  what():  St9bad_alloc
/bin/sh: line 1: 16919 Abgebrochen             ./testchecker
Betätigen Sie die Eingabetaste, um fortzufahren!
</code></pre>
<p>warum bricht das prog ab? kann ich eine ausgabe machen, die schneller als die bisherige ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298276</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Mon, 04 Jun 2007 09:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 09:56:55 GMT]]></title><description><![CDATA[<p>bad_alloc sprict dafür dass kein Speicher mehr zur Verfügung steht - und siehe da: dein Programm hat ein Speicherleck:</p>
<pre><code class="language-cpp">char *ret_str(int *array, size_t ln)
{
    char *cstring = new char[16];///&lt; Dieser speicher wird reserviert aber nie mehr freigegeben

    for(int i = ln; i &gt; 0; i--)
        cstring[ln-i] = ret_char(array[i-1]);

    return cstring;
    delete [] cstring;///&lt;Wird nie mehr aufgerufen, da die FUnktion bereits zurückgekehrt ist
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1298281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298281</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Mon, 04 Jun 2007 09:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 09:59:00 GMT]]></title><description><![CDATA[<p>Zu der Ausgabegeschwindigkeit: Die hängt natürlich auch von der verwendeten Konsole ab. Die muss ja auch zeichnen, scrollen usw. Wenn das Programm über ssh o.ä. läuft, muss der Text noch übers Netz.</p>
<p>Teste die Laufzeit doch mal mit vollständiger Ausgabe, die Du aber a) in eine Datei und b) nach /dev/null umleitest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298282</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 04 Jun 2007 09:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 10:17:40 GMT]]></title><description><![CDATA[<p>ich habe erstmal die funktion:</p>
<pre><code class="language-cpp">string ret_str(int *array, size_t ln)
{
	char *cstring = new char[ln];

	for(int i = ln; i &gt; 0; i--)
		cstring[ln-i] = ret_char(array[i-1]);
	string str = cstring;
	delete [] cstring;

	return str;
}
</code></pre>
<p>so umgeändert dass das speicherleck geschlossen ist. das prob ist nur dass nun ziemlich oft der cstring zu einem string umkopiert wird nur um diesen zurückzuliefern...</p>
<p>wenn ich das ganze einfach so gestalte</p>
<pre><code class="language-cpp">char *ret_str(int *array, size_t ln)
{
	char cstring[ln];

	for(int i = ln; i &gt; 0; i--)
		cstring[ln-i] = ret_char(array[i-1]);

	return cstring
}
</code></pre>
<p>dann bekomme ich einen buchstabensalat:<br />
statt:<br />
bsp:</p>
<pre><code>vergleiche: aafjbs mit string: hausba
vergleiche: aafjbt mit string: hausba
vergleiche: aafjbu mit string: hausba
</code></pre>
<p>sieht dass dann so aus:</p>
<pre><code>vergleiche: aaab+% mit string: hausba
...
vergleiche: aafj*&amp; mit string: hausba
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1298303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298303</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Mon, 04 Jun 2007 10:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 10:25:55 GMT]]></title><description><![CDATA[<p>hat sich erledigt; ich habe die absolut schnellste lösung ohne umkopieren gefunden!</p>
<p>string ret_str_quick(int *array, size_t ln)<br />
{<br />
string cstring;</p>
<p>for(int i = ln; i &gt; 0; i--)<br />
cstring += ret_char(array[i-1]);</p>
<p>return cstring;<br />
}</p>
<p>thx für die hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298308</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Mon, 04 Jun 2007 10:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 10:28:00 GMT]]></title><description><![CDATA[<p>du gibst ne adresse auf ein lokales array zurück (cstring), das kann nicht funktionieren. den speicher mit new zu allozieren ist schon richtig, du musst nur dafür sorgen, dass er irgendwann auch wieder freigegeben wird.</p>
<p>andererseits frag ich mich, warum du überhaupt nen cstring/string zurückgeben willst. hau doch den vergleich (strcmp) gleich mit in die funktion und returniere nur nen bool.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298310</guid><dc:creator><![CDATA[localstr]]></dc:creator><pubDate>Mon, 04 Jun 2007 10:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 11:04:35 GMT]]></title><description><![CDATA[<p>ok, ich habe mich etwas geirrt... das ganze mit den strings ist das mit abstand langsamste.</p>
<p>ich habe jetzt die funktion in die große schleife gepackt, mit new allokiert und schön deleted. jetzt muss ich nur die konsolenausgabe beschleunigen, denn die begrenzt das ganze auf ca 1 100 000 operationen, dabei wären ca 24 000 000 pro zeiteinheit möglich!! das ist nicht übel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298342</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:04:35 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 11:07:53 GMT]]></title><description><![CDATA[<p>dgrat schrieb:</p>
<blockquote>
<p>ok, ich habe mich etwas geirrt... das ganze mit den strings ist das mit abstand langsamste.</p>
<p>ich habe jetzt die funktion in die große schleife gepackt, mit new allokiert und schön deleted. jetzt muss ich nur die konsolenausgabe beschleunigen, denn die begrenzt das ganze auf ca 1 100 000 operationen, dabei wären ca 24 000 000 pro zeiteinheit möglich!! das ist nicht übel.</p>
</blockquote>
<p>Das ist auch nicht verwunderlich, da die Ausgabe auf die Konsole sehr viel aufwändiger ist als deine einfache und sehr kurze Berechnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298347</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 16:50:34 GMT]]></title><description><![CDATA[<p>Mal in die Runde eingeschmissen: Mit welchem Tool kann ich herausfinden, ob und wo mein Programm Speicherleaks produziert? Mit dem Debugger (insb. ASM-Code) kenne ich mich nicht so gut aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298729</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Mon, 04 Jun 2007 16:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 17:11:33 GMT]]></title><description><![CDATA[<p>Unter Linux gibt es dafür valgrind <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/1298748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298748</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 04 Jun 2007 17:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 17:22:49 GMT]]></title><description><![CDATA[<p>Ich meine für Windoze...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298757</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Mon, 04 Jun 2007 17:22:49 GMT</pubDate></item><item><title><![CDATA[Reply to langsames cout; performance test und programmabruch... on Mon, 04 Jun 2007 21:11:03 GMT]]></title><description><![CDATA[<p>Hallo mikey,</p>
<p>falls mein Programm einfach abstürzt, verwende ich GDB,<br />
zum Checken auf Memory-Leaks nehm ich MMGR.<br />
Im Prinzip sind das Makro-Definitionen, die Funktionen aufrufen, die<br />
Speicheranforderungen loggen. Kostet natürlich Performance und muss in jeder<br />
Datei inkludiert werden. Ich includier immer ne Config-Datei, die mir<br />
das nur includiert, wenn das Makro MMBR_DEBUG gesetzt ist.<br />
So kann man das immer zwischendurch mal zum testen reinmachen.<br />
Allerdings gibt es (sehr) wenige Ausnahmen (statische Objekte - unter<br />
bestimmten Bedingungen - frag mich nicht, wann genau), wo es nicht funct.</p>
<p>EDIT: Naja nen Link wäre auch praktisch<br />
<a href="http://www.koders.com/cpp/fidF4248EED693AB98956E4AF0D594164BCCAB31406.aspx" rel="nofollow">http://www.koders.com/cpp/fidF4248EED693AB98956E4AF0D594164BCCAB31406.aspx</a><br />
<a href="http://www.koders.com/c/fidBAB9E56219A304846FAA7A14102FD65103F1CB3F.aspx" rel="nofollow">http://www.koders.com/c/fidBAB9E56219A304846FAA7A14102FD65103F1CB3F.aspx</a></p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298929</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 04 Jun 2007 21:11:03 GMT</pubDate></item></channel></rss>