Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about optimizing loops

Author: Jaime Benito de Valle Ruiz

Date: 13:18:53 08/22/03

Go up one level in this thread


On August 22, 2003 at 16:02:56, Uri Blass wrote:

>I have  many cases when I want to do something for all the 1's of a number that
>is
>0-255
>
>I do something like this if I am sure that the number is not 0(I start with
>while if the number can be 0)
>
>do
>{
>  j=smallest_power[i];
>/*for example smallest_power[34]=1 because 34=2^1+2^5 and 1 is the smallest
>power in this representation*/
>  f(j);
>  i&=i-1;
>}
>while (i>0);
>
>I believe that it is not optimal because I calculate information that I do not
>need and it is better to have something like
>
>for (k=0;k<weight[i];k++)
>f(power[i][k]);
>
>I already have the relevant array weight[i] that gives me the number of 1's but
>before generating the array power[i][k] that gives the value of the k power of i
>I prefer to ask here maybe someone has a better idea.
>
>Note that I am even not sure if the second idea is faster because I am afraid
>that calling array of 2 dimensions may be slower.
>
>Uri

I'm not sure I know what do you intend to do here. You are calling a function
"f" (that takes a bit number) for every bit set to 1 that you find in "i",
right?
Quite likely you can optimize this loop by using assembler, but maybe if you
tell us what this function "f" is supposed to be doing, an alternative solution
can be suggested for the whole problem.
Is it really important for "f" to know what bit is it, or just that there is a
bit set to 1?
Regards,

  Jaime



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.