[vox-tech] loop efficiency and testing against zero.

Tim Riley timriley at appahost.com
Fri Jun 16 12:52:17 PDT 2006


Peter Jay Salzman wrote:
> I've read somewhere that a loop that runs from 0 to some number should be
> written to go in reverse order, e.g. instead of:
> 
>    for ( int i = 0;  i < 10;  ++i )
> 
> we should write:
> 
>    for ( int i = 9;  i >= 0;  --i )

I would think this:
	for( int i = MAXINT; i; --i );
is faster than this:
	for( int i = 0; i < MAXINT; ++i );

However, on my machine they both took the
same time -- 3.24 seconds.

I would think the test of 'i'
would be a single instruction and the test
of 'i < MAXINT' would take multiple
instructions. But surprise!

> 
> The rationale is that it's faster to test against 0 than some other integer,
> but it isn't obvious to me *why* it's faster.
> 
> Why is that?
> 
> Pete
> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
> 



More information about the vox-tech mailing list