6 Stimmen

Wird eine boolesche Bedingung in einer for-Schleife, die immer falsch ist, wegoptimiert?

Ich habe die folgende Situation

bool user_set_flag;

getFlagFromUser(&user_set_flag);

while(1){

    if(user_set_flag){
        //do some computation and output

    }

    //do other computation
}

Die Variable user_set_flag wird nur einmal und nur einmal im Code gesetzt, und zwar ganz am Anfang, wo der Benutzer im Wesentlichen auswählt, was er mit dem Programm machen will. Angenommen, der Benutzer wählt user_set_flag = false dann wird der Compiler den Code so kompilieren, dass die if(user_set_flag) Anweisung nur einmal geprüft wird, oder ob sie immer geprüft wird. Kann ich dem Compiler Hinweise geben, wie z. B. die Umwandlung von bool in const?

Der Grund für diese Frage ist, dass meine Anwendung zeitkritisch ist und Frames so schnell wie möglich verarbeitet werden müssen. Eine Verzweigung, die immer falsch ist, sollte irgendwie zur Laufzeit bestimmt werden können?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X