boolsche Optimierungen



  • Hi zusammen,

    angenommen, ich habe solchen Code:

    if(a && b && c)
      {
      d = true;
      }
    else
      {
      d = false;
      }
    

    kann der Compiler das genauso gut optimieren wie

    d = a && b && c;
    

    Und wie siehts bei viel komplexeren Bedingungen aus, die auch noch weitere

    else if(...)
    

    Bedingungen haben?

    Danke!

    Mark



  • Also so ein Block ala "if(irgendwas) x=true; else x=false;" sieht in meinen Augen sinnlos und redundant aus - da ist auf jeden Fall die Variante "x=irgendwas;" vorzuziehen. (ob der Compiler das eine oder das andere besser optimieren kann, ist mir egal 🙂 vermutlich kommen in absehbarer Zeit sowieso Compiler, die das selbständig erkennen, und dann ergibt beides den selben Maschinencode)

    Bei längeren if-else-Kaskaden ist die ausgeschriebene Variante dann vermutlich übersichtlicher. Aber das kommt dann auf den Einzelfall an.



  • Noch ne Alternative: 😉 😃

    BOOL d = (a && b && c) ? true : false;
    


  • BorisDieKlinge schrieb:

    Noch ne Alternative: 😉 😃

    BOOL d = (a && b && c) ? true : false;
    

    Dieses Beispiel zeigt dann sehr eindrücklich warum ein if hier fehl am Platz ist 😉

    MfG SideWinder



  • Ein Compiler kann sowas optimieren.
    Aber trotzdem solltest du es gleich deutlich hinschreiben.



  • lolz schrieb:

    Ein Compiler kann sowas optimieren.
    Aber trotzdem solltest du es gleich deutlich hinschreiben.

    Nicht "trotzdem" sondern "gerade deswegen" solltest du es deutlich hinschreiben. Das optimale macht dann schon dein (guter) Compiler daraus.

    MfG SideWinder


Log in to reply