Ich möchte bestätigen, ob eine bestimmte Art Optimierung, die mir in den Sinn kam, möglich ist.Wird die Inline-Funktion den externen Zustand vermeiden?
// test.h
class Test
{
public:
static void Main();
private:
__forceinline static bool func1()
{
return ((externalCond1 && externalCond2) ? true : false);
}
}
// test.cpp
#include "test.h"
void Test::Main()
{
if(func1() == true)
{
//Do something
}
}
Würde die Bedingung bei Main
dank der inlined func1
wegoptimiert werden und verhindern, dass es tatsächlich getestet wird? (was dazu führt, dass nur die Bedingungen innerhalb von func1
getestet werden).
Dies ist nur ein Beispielcode. Aber da meine echte Inlined-Funktion ohnehin so kurz ist, würde ich einfach die Bedingungen innerhalb von func1
an alle Stellen kopieren, die diese Funktion aufrufen wollten, wenn sich herausstellt, dass diese Optimierung unmöglich ist.
Schließlich möchte ich wissen (nur wenn die Optimierung möglich ist), ob es einfach ein Fall des "Return Value Optimization" -Paradigmas wäre.
Ein C++ - Compiler ist erlaubt, aber nicht erforderlich, um eine Optimierung zu verwenden, die keine beobachtbaren Auswirkungen hat. Ihre gewünschte Optimierung hat keine beobachtbaren Auswirkungen. Ihr C++ - Compiler kann diese Optimierung nach eigenem Ermessen implementieren oder nicht. Es ist erlaubt, dies zu tun, ist aber nicht dazu verpflichtet. In der Regel hängt die Durchführung dieser Optimierung von den spezifischen Kompilierungsoptionen ab, die Sie beim Kompilieren des Codes auswählen. –