vendredi 15 mai 2015

Ternary vs Chained If-else-if (Performance)

I did the due-diligence to see if this has been asked before and didn't find anything identical but close, so here goes.

Say I have a chain of if-else-if statements.

foreach (value in valueList)
    if (value == 120) {
        w = true;
    } else if (value == 140) {
        x = true;
    } else if (value == 160) {
        y = true;
    } else if (value == 180) {
        z = true;
    }
}

Is there any advantage of changing the else-if chain to ternary expressions such as:

foreach (value in valueList) {
    w = (value == 120) ? true : false;
    x = (value == 140) ? true : false;
    y = (value == 160) ? true : false;
    z = (value == 180) ? true : false;
}

My first inclination is no. Because of the for loop every assignment is made each time the loop happens. Whereas in the if-else-if chain, the assignment is made only once. But the comparisons are made more often (right?). Can anybody settle this for me?

I know a switch would easily defeat the both in terms of performance. Can I base this question on the assumption that using switch is not an option?

I guess another question inside this question would be what are the Big-O comparisons between the two?

Aucun commentaire:

Enregistrer un commentaire