Это ситуация, с которой я часто встречаюсь как неопытный программист, и мне интересно, в частности, за амбициозный, быстрый проект, который я пытаюсь оптимизировать. Для основных C-подобных языков (C, objC, С++, Java, С# и т.д.) И их обычных компиляторов эти две функции будут работать так же эффективно? Есть ли разница в скомпилированном коде?
void foo1(bool flag)
{
    if (flag)
    {
        //Do stuff
        return;
    }
    //Do different stuff
}
void foo2(bool flag)
{
    if (flag)
    {
        //Do stuff
    }
    else
    {
        //Do different stuff
    }
}
В принципе, существует ли когда-либо непосредственный бонус/штраф за эффективность при начале break ing или return? Как задействован стек? Существуют ли оптимизированные особые случаи? Существуют ли какие-либо факторы (например, вложение или размер "Делать материал" ), которые могут существенно повлиять на это?
Я всегда сторонник улучшения удобочитаемости в отношении небольших оптимизаций (я вижу, что foo1 много с проверкой параметров), но это происходит так часто, что я хотел бы отложить все беспокойство раз и навсегда.
И я знаю о подводных камнях преждевременной оптимизации... тьфу, это некоторые болезненные воспоминания.
EDIT: я принял ответ, но ответ EJP объясняет довольно кратко, почему использование return практически ничтожно (в сборке return создает "ветвь" до конца функции, что чрезвычайно быстро. Разветвление изменяет регистр ПК и может также влиять на кеш и конвейер, что довольно незначительно.) В этом случае, в частности, это буквально не имеет значения, поскольку и теги if/else, и return создают одну ветвь конец функции.