Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: optimizing loops question

Author: Uri Blass

Date: 07:55:10 07/20/03

Go up one level in this thread


On July 20, 2003 at 09:48:39, Omid David Tabibi wrote:

>On July 20, 2003 at 09:36:33, Uri Blass wrote:
>
>>On July 20, 2003 at 09:11:35, Ricardo Gibert wrote:
>>
>>>On July 20, 2003 at 08:01:50, Uri Blass wrote:
>>>
>>>>The question is if there is a way to optimize loops without writing the same
>>>>commands twice in the code that does the code less readable.
>>>>
>>>>I have in some places in movei things like
>>>>
>>>>while (i<n)
>>>>{
>>>>  f(i);
>>>>  i++;
>>>>}
>>>>f(n);
>>>>
>>>>
>>>>f is practically some C lines and not a function
>>>>because I use some local varaibles and giving them to
>>>>a function may make the program slower.
>>>>
>>>>The problem is how to avoid writing the lines of f
>>>>twice without doing the code slower.
>>>>
>>>>The following option is slower because I have also
>>>>i++ when i=n
>>>>
>>>>do
>>>>{
>>>>  f(i);
>>>>  i++;
>>>>}
>>>>while (i<=n);
>>>>
>>>>I also thought about the following code but
>>>>I do not like if commands and I understood it is better
>>>>to have branchless code.
>>>>
>>>>do
>>>>{
>>>>  f(i);
>>>>  if (i==n)
>>>>   break;
>>>>  i++;
>>>>}
>>>>while (1);
>>>>
>>>>Uri
>>>
>>>Did you profile your code to determine whether optimizing this is worthwhile?
>>
>>I guess that maybe I can earn 1-2% speed improvement from optimization of it.
>>I do not know how to profile my code to find how much I can get from it.
>>I can find time of functions but it does not tell me the information.
>
>Use Intel VTune Performance Analyzer
>http://www.intel.com/software/products/vtune/ , it has a trial period of one
>month. Using the "function call" profiling, it provides you with a wealth of
>information about the efficiency of your functions. I think the old rule of
>80-20 applies also in computer chess: 80% of the time is spent in 20% of the
>functions. Finding those 20% and optimizing them can be easier using a profiler.

I know that most of the time is used on the qsearch,makemove and the move
generator.

I decided to compare simple for in the relevant case and found that it wass
1/2% slower in the opening position.

I think that I will keep it as for because 1/2% is not a big change.

Uri




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.