<?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[Frage zu Parameterliste]]></title><description><![CDATA[<p>ich hab ne frage<br />
kann ich wenn ich irgendwie beim aufruf vom konstruktor eines objektes schon eingegebene werte benutzen ohne sie ein zweitesmal berechnen zu müssen?</p>
<p>ich dachte im prinzip so<br />
erstmal die klasse</p>
<pre><code class="language-cpp">class klasse
{
public:
    klasse() {}
    klasse(float _f,float _g) : f(_f),g(_g) {}
    float f,g;
};
</code></pre>
<p>und jetzt diese funktion</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    klasse ret;
    ret.f=k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F));
    ret.g=k.g*sqrt(ret.f+ret.f)/ret.f+ret.f*sqrt(ret.f);
    return(ret);
}
</code></pre>
<p>ich dachte ich kann foo beschleunugen wenn ich mit dem konstruktor arbeite<br />
gut neue funktion</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    return( //f
            k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F)),
            //aber wie soll ich g berechnen ohne f mehrmals zu berechnen
</code></pre>
<p>gibt es eine möglichkeit schon berechnete member einer klasse während des konstruktoraufrufs schon zu benutzen?<br />
also</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    return( //f
            k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F)),
            //g
            k.g*sqrt(f+g)/f+f*sqrt(f); //FEHLER!
}
</code></pre>
<p>Wie kann ich den Fehler beheben und damit wirkliech foo zu beschleunigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196037/frage-zu-parameterliste</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 07:05:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196037.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Oct 2007 18:59:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 18:59:48 GMT]]></title><description><![CDATA[<p>ich hab ne frage<br />
kann ich wenn ich irgendwie beim aufruf vom konstruktor eines objektes schon eingegebene werte benutzen ohne sie ein zweitesmal berechnen zu müssen?</p>
<p>ich dachte im prinzip so<br />
erstmal die klasse</p>
<pre><code class="language-cpp">class klasse
{
public:
    klasse() {}
    klasse(float _f,float _g) : f(_f),g(_g) {}
    float f,g;
};
</code></pre>
<p>und jetzt diese funktion</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    klasse ret;
    ret.f=k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F));
    ret.g=k.g*sqrt(ret.f+ret.f)/ret.f+ret.f*sqrt(ret.f);
    return(ret);
}
</code></pre>
<p>ich dachte ich kann foo beschleunugen wenn ich mit dem konstruktor arbeite<br />
gut neue funktion</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    return( //f
            k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F)),
            //aber wie soll ich g berechnen ohne f mehrmals zu berechnen
</code></pre>
<p>gibt es eine möglichkeit schon berechnete member einer klasse während des konstruktoraufrufs schon zu benutzen?<br />
also</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    return( //f
            k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F)),
            //g
            k.g*sqrt(f+g)/f+f*sqrt(f); //FEHLER!
}
</code></pre>
<p>Wie kann ich den Fehler beheben und damit wirkliech foo zu beschleunigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391452</guid><dc:creator><![CDATA[abc123]]></dc:creator><pubDate>Wed, 24 Oct 2007 18:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 19:12:43 GMT]]></title><description><![CDATA[<p>Kannst du mal ein einfaches beispiel machen? ich hab keine ahnung was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391460</guid><dc:creator><![CDATA[wähä]]></dc:creator><pubDate>Wed, 24 Oct 2007 19:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 19:33:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">klasse foo(klasse &amp;k) 
{ 
    return( //f 
            k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F)), 
            //g 
            k.g*sqrt(f+g)/f+=f*sqrt(f); //FEHLER! 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1391471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391471</guid><dc:creator><![CDATA[Mini Maus]]></dc:creator><pubDate>Wed, 24 Oct 2007 19:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 19:45:20 GMT]]></title><description><![CDATA[<p>Es wird eine Klasse (die nichts mit der eigentlichen berechnung zu tun hat sondern nur variablen speichert und über konstruktor übernimmt) definiert<br />
es gibt eine funktion, die eine referenz auf ein objekt der obigen klassen erwartet und ein objekt der klasse zurückgibt, beschleunigt werden soll und deshalb nicht erst ein objekt erzeugt und dann die einzelnen werte berechnet, sondern im parameter von return wird ein neues objekt erzeugt und die werte im konstruktor berechnet<br />
Wie kann ich hier beim aufruf des konstruktors den nächsten parameter berechnen, der aber vom vorhergehenden parameter abhängt, ohne doppelt zu berechnen</p>
<p>bsp</p>
<pre><code class="language-cpp">return( CEineKlasseMitKonstruktor( //Das ist eine Klasse deren Konstruktor 2 floats übernimmt die berechnet werden sollen
fParameterFuerKonstruktor1*2, //Die komplizierte langdauernde Berechnung
fParameterFuerKonstruktor2 *... //Hier soll der 2. Parameter berechnet werden, der mit dem 1. Parameter zb addiert werden soll
//ohne dass ich parameter1 zweimal berechnet wird (1x bei Parameter1 und dann bei parameter2 mehrmals)
</code></pre>
<p>im Prinzip muss ich irgendwie im Konstruktorparameter auf die Member (die schon früher in der parameteliste berechnet wurden) der neuen klasse in der parameterliste zugreifen können</p>
<p>Konkret gehts mir dabei um die Funktion zu beschleunigen die eine Matrix invertiert (Funktion von David Scherfgen (Autor von &quot;3D-Spieleprogrammierung mit C++ und DirectX&quot;))<br />
Da wird jede komponente der matrix einzeln berechnet und die letzten 4 hängen von den ersten ab. Die genaue Funktion kann ich wegen urheberrechtlichen blablabla nicht preisgeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391481</guid><dc:creator><![CDATA[abc123]]></dc:creator><pubDate>Wed, 24 Oct 2007 19:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 19:51:14 GMT]]></title><description><![CDATA[<p>Sorry, aber deine Beispiele sind voller Syntaxfehler. Da findet kein Mensch durch (und du anscheinend selber noch nicht einmal)!</p>
<p>Wenn du einen Ausdruck nicht doppelt berechnen willst, dann speicherst du diesen halt in eine lokale Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391488</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 24 Oct 2007 19:51:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 20:30:00 GMT]]></title><description><![CDATA[<p>Wenn ich das mit der lokalen Variable mache hab ich den gleichen effekt wie wenn ich die funktion so lasse und in der funktion, des zurückzugebenden objektes jedes member einzeln berechne</p>
<p>ich will ja die konstruktorparameter berechnen während er aufgerufen wird<br />
aber dabei muss ich zur berechnung auf die member zugreifen können, die schon als parameter übergeben wurden, denn ich brauche für die letzten berechnungen alle vorhergehenden also lohnt es sich nicht mit lokalen variablen</p>
<p>gibts da eine möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391508</guid><dc:creator><![CDATA[abc123]]></dc:creator><pubDate>Wed, 24 Oct 2007 20:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 20:34:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int a = wahnsinnigteureberechnung();
int b = nochvielteurerefunc(a);
Foo f(a, b);
</code></pre>
<p>was ist daran nicht praktikabel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391512</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 24 Oct 2007 20:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 20:43:10 GMT]]></title><description><![CDATA[<p>Das hat am ende den gleichen Effekt als wenn ich die member einzeln berechne</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <em><strong>Ich geb's auf</strong></em> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391518</guid><dc:creator><![CDATA[abc123]]></dc:creator><pubDate>Wed, 24 Oct 2007 20:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 20:45:07 GMT]]></title><description><![CDATA[<p>du hast da nen eklatantes verständnisproblem <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/1391521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391521</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 24 Oct 2007 20:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Wed, 24 Oct 2007 20:53:05 GMT]]></title><description><![CDATA[<p>Das macht dein Compiler meist automatisch für dich.</p>
<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=Optimize#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=Optimize#Answ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391526</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 24 Oct 2007 20:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Thu, 25 Oct 2007 07:12:48 GMT]]></title><description><![CDATA[<p>naja, ums zu beschleunigen, fällt mir höchstens ne numerische berechnung der wurzel ein, weiß nicht genau, wie sqrt die wurzel berechnet, aber die numerische berechnung lohnt sich meistens nur, wenn man in ner schleife häufiger sqrt verwenden würde und sich dann lieber die größe iterativ besorgt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391623</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Thu, 25 Oct 2007 07:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Thu, 25 Oct 2007 07:34:15 GMT]]></title><description><![CDATA[<p>zu 99,9999999999999% wird hier an der falschen stelle optimiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391638</guid><dc:creator><![CDATA[mmmmmm]]></dc:creator><pubDate>Thu, 25 Oct 2007 07:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterliste on Thu, 25 Oct 2007 07:44:05 GMT]]></title><description><![CDATA[<p>abc123 schrieb:</p>
<blockquote>
<p>und jetzt diese funktion</p>
<pre><code class="language-cpp">klasse foo(klasse &amp;k)
{
    klasse ret;
    ret.f=k.f*sqrt(k.g*k.f+3.5F)*sqrt(k.g+)/(kg.sqrt*(2.F));
    ret.g=k.g*sqrt(ret.f+ret.f)/ret.f+ret.f*sqrt(ret.f);
    return(ret);
}
</code></pre>
</blockquote>
<p>Und diese Formel geht ohne Murren durch den Compiler? Die Berechnung von ret.f ist ja ein einziger Syntax-Fehler.</p>
<p>Ansonsten: Bevor du von Hand optimierst, solltest du erstmal feststellen, ob diese Funktion überhaupt der Engpass ist. Wenn ja, ist es vielleicht einfacher/sinnvoller, den umliegenden Algorithmus auseinanderzunehmen - so daß sie etwas seltener aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391641</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 25 Oct 2007 07:44:05 GMT</pubDate></item></channel></rss>