Избегание ветвей в управляемых языках

В C при компиляции на машину x86 я обычно заменял ветки логическим выражением, когда скорость наиболее высока. важный аспект, даже если условия сложные, например, вместо

char isSomething() {
    if (complexExpression01) {
        if (complexExpression02) {
            if(!complexExpression03) {
                return 1;
            }
        }
    }
    return 0;
}

я напишу:

char isSomething() {
    return complexExpression01 &&
           complexExpression02 &&
           !complexExpression03 ;
}

Теперь ясно, что это может быть труднее в обслуживании и менее читаемый код, но на самом деле он может быть быстрее.

Есть ли причина действовать таким же образом при работе с управляемым кодом, например с C #? Дорогие ли «скачки» в управляемом коде по сравнению с неуправляемым кодом (по крайней мере, на x86)?

6
задан MByD 8 November 2011 в 07:49
поделиться