Josh Gudgin
Josh Gudgin

Reputation: 66

Which code is more efficient, extra If statement or repeated function

With regards to coding in C, which would be faster, to check the statement with an If, or I just run the function anyway for example say the output is already 1.

if(a==b && output!=1)
{
    output=1;
}

Or

if(a==b)
{
    output=1;
}

In the first code, an extra check has to be run every time the code runs.

In the second you are running the code repeatedly unnecessarily

Which is more efficient??

Upvotes: 0

Views: 387

Answers (2)

Yusef Maali
Yusef Maali

Reputation: 2431

Regardless any possible optimization, as shown in the comments, the first code is less efficient than the second code due to the extra check.

Beware of your data meaning, that check may be mandatory.
If not, you should optimize your code as suggested.


Edit

I'm assuming your question to be more theoretical than practical. In any real scenario, the data context assume a huge role when we want to optimize some code.
The code don't need to be fast itself, but need to be fast in processing its data.

Upvotes: 2

Mike Wodarczyk
Mike Wodarczyk

Reputation: 1273

The question basically boils down to the question of is a compare less expensive than a variable assignment. For integers, the answer is no. I am assuming this will be in a tight loop where the variables will already be in the CPU level 1 cache. The compare will compile down to Op codes like:

1) Move "output" memory locations data into Register A
2) Put  1 into Register B
3) Jump <somewhere> if Register A == Register B.

You might get an optimization where 2) is not done if comparing to 0 because there are special op codes for comparing to 0 in most CPUs.

The assignment will compiler to op codes like:

1) Put 1 into Register A
2) Push Register A to memory location of output

The question come down to clock cycles spent for each of the op codes. I think that they are all likely to be exactly the same clock cycles.

Upvotes: 2

Related Questions