<?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[programm zu langsam (hoffnungslos denke ich)]]></title><description><![CDATA[<p>ich habe mal mein project mit cachegrind profiled<br />
und 86,61% der instruktionen laufen in dieser Zeile ab :</p>
<pre><code class="language-cpp">// dot product
template &lt;class T&gt;
T Vector&lt;T&gt;::operator*(const Vector&amp; v) const
{
T ret_val=0;
for(std::size_t i=0; i &lt; m_Dim; i++) ret_val += m_data[i] * v.m_data[i]; // 86.61%
return ret_val;
}
</code></pre>
<p>ich denke mal, da irgendwas zu optimieren ist hoffnungslos, oder?<br />
ich könnte per hand die schleife aufrollen,aber da pfusche ich imho dem<br />
compiler dazwischen</p>
<p>m_data ist ein pures c-array vom type T, inline dürfte auch nichts bringen,<br />
denn 86.61% laufen in dieser Zeile ab, und die kosten für die gesamten Aufrufe sind nur unbedeutend höher : 86.77</p>
<p>vorschläge sind willkommen ...</p>
<p>profiling mit kcachegrind ist leider nur im debug-modus möglich, also weiss ich auch nicht direkt, wie der gcc (oder icc, ich benutze beide) sowas optimiert, und wie man da noch was rausholen kann.</p>
<p>aber immerhin schön, das ich nix optimieren muss, wenn nicht diese eine zeile <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204334/programm-zu-langsam-hoffnungslos-denke-ich</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 13:47:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204334.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Feb 2008 19:34:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 19:34:20 GMT]]></title><description><![CDATA[<p>ich habe mal mein project mit cachegrind profiled<br />
und 86,61% der instruktionen laufen in dieser Zeile ab :</p>
<pre><code class="language-cpp">// dot product
template &lt;class T&gt;
T Vector&lt;T&gt;::operator*(const Vector&amp; v) const
{
T ret_val=0;
for(std::size_t i=0; i &lt; m_Dim; i++) ret_val += m_data[i] * v.m_data[i]; // 86.61%
return ret_val;
}
</code></pre>
<p>ich denke mal, da irgendwas zu optimieren ist hoffnungslos, oder?<br />
ich könnte per hand die schleife aufrollen,aber da pfusche ich imho dem<br />
compiler dazwischen</p>
<p>m_data ist ein pures c-array vom type T, inline dürfte auch nichts bringen,<br />
denn 86.61% laufen in dieser Zeile ab, und die kosten für die gesamten Aufrufe sind nur unbedeutend höher : 86.77</p>
<p>vorschläge sind willkommen ...</p>
<p>profiling mit kcachegrind ist leider nur im debug-modus möglich, also weiss ich auch nicht direkt, wie der gcc (oder icc, ich benutze beide) sowas optimiert, und wie man da noch was rausholen kann.</p>
<p>aber immerhin schön, das ich nix optimieren muss, wenn nicht diese eine zeile <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447768</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Fri, 01 Feb 2008 19:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 19:42:43 GMT]]></title><description><![CDATA[<p>Was ist den m_Dim? Oder besser gesagt, wieviel mal durchläuft er die Schlaufe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447770</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 01 Feb 2008 19:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 19:55:48 GMT]]></title><description><![CDATA[<p>glaub kaum, dass man die berechnung selbst grossartig optimieren kann. überprüf lieber die stellen, an denen die methode gerufen wird und reduzier die aufrufe, sofern es möglich ist. wenn das produkt zweier vektoren einmal berechnet wurde, muss es nie ein zweites mal berechnet werden, solange sich an den beiden beteiligten vektoren nix geändert hat.</p>
<p>je nach größe der vektoren könnte man hier mit ner art caching nachhelfen. die vector klasse muss sich dazu möglicherweise merken, ob sie sich geändert hat.</p>
<p>wichtig ist hier allerdings dann die frage, wie gross so ein vektor ist. wenn m_dim klein ist, wird man auch mit caching nicht viel erreichen. dann hilft nur die aufrufe zu reduzieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447776</guid><dc:creator><![CDATA[thordk_]]></dc:creator><pubDate>Fri, 01 Feb 2008 19:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 19:57:46 GMT]]></title><description><![CDATA[<p>also in der jetzigen version haben die Vektoren ne dimension von 500-1000,</p>
<p>Das sind dann in der Klasse darüber 500-1000 aufrufe dieser Funktion aber über<br />
openMP parallelisiert.</p>
<p>also eigentlich ist das ganze eine multiplikation einer<br />
(500-1000)x(500-1000) Matrix mit einem Vektor, die Matrix ist voll besetzt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447779</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Fri, 01 Feb 2008 19:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 20:05:23 GMT]]></title><description><![CDATA[<p>Du profilest im Debug-Modus? Leider kann man da noch keine Entschiedungen treffen, welche Teile wirklich relevant sind. Eventuell optimiert dein Kompiler so gut, dass der jetzige Flaschenhals im Release-Code gar kein Problem mehr darstellt. Bestimmte Redundanzen muss der Kompiler im Debugmodus nämlich im Code so belassen, da sonst Debuggen nur noch schwer möglich wäre.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447783</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 01 Feb 2008 20:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 20:11:07 GMT]]></title><description><![CDATA[<p>Dein Profiling im Debugmodus kannst du vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447786</guid><dc:creator><![CDATA[zustimm]]></dc:creator><pubDate>Fri, 01 Feb 2008 20:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to programm zu langsam (hoffnungslos denke ich) on Fri, 01 Feb 2008 20:29:07 GMT]]></title><description><![CDATA[<p>ihr habt recht, ich baue grade kernel neu, und profile dann im release-modus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447798</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Fri, 01 Feb 2008 20:29:07 GMT</pubDate></item></channel></rss>