bedingung vereinfachen bzw. optimieren?



  • Was is mit

    if(!(Y2<=data[i].y || Y2>=data[i+1].y) )
    

    ?



  • if(!(Y2<=data[i].y || Y2>=data[i+1].y) )
    

    Das ist das selbe wie meins: halt nur in Grün.

    if(Y2>data[i].y   && data[i+1].y> Y2)// Das reicht vollkommen aus
    

    Du hast einfach nur die Morganische Regel Angewandt mehr net:)
    Weil bei: Y=7
    data[i].y=0
    data[i+1].y=10
    ist ja noch alles in Butter:)
    Aber sobald data[i] und data[i+1] vertauscht werden stimmt deine funktion auch schon wieder net:)



  • if (Y2>MIN(data[i].y,data[i+1].y) && Y2<MAX(data[i].y,data[i+1].y))...
    

    Ob das jetzt so viel eleganter ist, ist wohl Geschmackssache...



  • bool bo= (data[i].y < Y2) ? (data[i+1].y > Y2) : (data[i+1].y < Y2);
    

    ^^

    wer bekommt es noch perfomanter hin?????? 🕶



  • BorisDieKlinge schrieb:

    bool bo= (data[i].y < Y2) ? (data[i+1].y > Y2) : (data[i+1].y < Y2);
    

    wer bekommt es noch perfomanter hin??????

    ohne branches usw ist meistens performanter^^

    x = data[i].y < Y2 && Y2 < data[i+1].y;
    

    oder

    x = data[i].y <= Y2 && Y2 <= data[i+1].y;
    

    wenn die grenzen selber auch gültig sind
    🙂



  • fricky schrieb:

    BorisDieKlinge schrieb:

    bool bo= (data[i].y < Y2) ? (data[i+1].y > Y2) : (data[i+1].y < Y2);
    

    wer bekommt es noch perfomanter hin??????

    ohne branches usw ist meistens performanter^^

    x = data[i].y < Y2 && Y2 < data[i+1].y;
    

    oder

    x = data[i].y <= Y2 && Y2 <= data[i+1].y;
    

    wenn die grenzen selber auch gültig sind
    🙂

    Und was ist x? Und wird man damit machen?



  • Tachyon schrieb:

    Und was ist x? Und wird man damit machen?

    x ist 0 oder 1 bzw. 'false' oder 'true'.
    ohne das 'x' kannste den ausdruck für eine if-anweisung nehmen.
    🙂



  • x = data[i].y < Y2 && Y2 < data[i+1].y;
    

    HALLLOOOOOOOOO

    der Autor will prüfen ob Y2 zwiscehn den beiden werten liegt:

    Y2= 7;
    
    data[i].y=5;
    data[i+1].y=10;
    
    data[i].y=10;
    data[i+1].y=5;
    

    fricky dein geht nur wenn data[i].y < data[i+1].y nicht anderherum...



  • BorisDieKlinge schrieb:

    fricky dein geht nur wenn data[i].y < data[i+1].y nicht anderherum...

    ach mist, dann hab ich gepennt.
    🙂



  • kannst geben.. das heist meine variante macht immer nur 2 vergleiche, wobei die andere variante je nach fall 4 braucht;)


Anmelden zum Antworten