Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Induction Variable Optimizations

Name: Dinga 2010-09-12 3:50


for(j=1;j<5;++j)
 fprintf(stdout,"%d\n",j*3);


Addition is cheaper than multiplication, so the compiler can convert this fragment to the one bellow.


int s = 0;
for(j=1;j<5;++j)
{
 s += 3
 fprintf(stdout,"%d\n",s);
}


A temporary variable has been introduced in order to eliminate the multiplications.

Name: Anonymous 2010-09-12 3:59

It's not nearly as costly as you think it is. Stop trying to microoptimize useless stuff like this at the cost of clarity. A good enough C compiler will already handle this nicely, for example, multiplication by constants is optimized by some compilers, here's one possible optimization for reg*3 on x86:

8D0440          LEA EAX,DWORD PTR DS:[EAX+EAX*2]

Which is faster than your add by 3, especially if the variable is not in a separate register.

tl;dr: Stop microoptimizing, a good compiler will take care of it.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List