if->return vs. if->else efficiency

This may sound like a silly question, and I hesitated to post it, but still: if something needs to run only in a certain condition, which of these is more efficient:

A.

if (condition) {
   // do
   // things...
}

B.

if (!condition) { return; }
// do
// things...

Solution 1:

They are equally efficient, but B is usually considered to give better readability, especially when used to eliminate several nested conditions.

Solution 2:

Please pick the thing that is most readable. Performance optimizations at this level are hardly ever an issue. Even really performance sensitive parts of frameworks (such as the .NET framework) do not benefit from such an micro optimization.

Solution 3:

It's a style thing. The performance is not relevant; both produce nearly identical machine code.

A few considerations on the style:

If you want to avoid 'horizontal programming', you might want to prefer B to avoid nested conditions. For example, if you want to add exceptions without affecting the flow of the method too much:

A:

public String getDescription(MyObject obj) {
    if (obj == null) {
        return "";
    } else {
        if (!obj.isValid()) {
            return "invalid";
        } else {
            ...
        }
    }
 }

B:

public String getDescription(MyObject obj) {
    if (obj == null) {
        return "";
    }

    if (!obj.isValid()) {
        return "invalid";
    }

    ....
 }

But the difference is minimal if you ask me. Definitely not worth a 'code style war'.