Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about local and global variables

Author: Uri Blass

Date: 07:32:40 09/02/01

Go up one level in this thread


On September 02, 2001 at 09:44:53, Robert Hyatt wrote:

>On September 02, 2001 at 07:29:12, Uri Blass wrote:
>
>>My question is when it is a good idea to define global variables
>>instead of local variables
>
>
>There are a few issues:
>
>1.  If you want a variable to maintain its "state" across procedure calls,
>then it should be either global, or static in that procedure.  There is no
>real difference between the two.
>
>2.  If you want a variable to be visible in multiple procedures, then you
>can either make them global for the entire program, or just global to a
>specific set of procedures, whichever you prefer.

I think about variables that I do not care about their value
when I am out of the procedure so changing them to be global
varaibles is not going to change the program except speed.

I started by doing these variables only local variables but
decided to test the option of doing part of them global variables.

I found that defining them as global variables and using them as
global variables only in part of the procedures could make my program
slightly faster in doing the same thing and the question is
if there is a way to find the relevant procedures for every variable
without testing run times.



>
>3.  If you have plans for a parallel search, and you modify global variables
>as part of your tree search, this won't work in a parallel search, because
>the multiple threads will share those global variables making them useless
>if they are being modified, unless you start locking/unlocking them.

I do not plan parallel search in the near future
I even do not have a chess program and only a legal move generator
and my plans in the near future are only to try to do it faster
without losing information that it generates.

I almost did not work on my move generator in the last month
but I decided to think about it again.

It is slightly slower than Crafty in calculating perft 6 from
the initial position.
>
>There is no performance issue at all in the use of global and local
>variables, if they are used in a single procedure.  Otherwise you need some
>way to let multiple procedures see a local variable, which generally means
>a formal parameter in a procedure call, which can hurt performance dur to the
>lack of registers on the X86 processors.

I found that in part of the procedures using global variables
instead of defining local variables with the same name helped
the program to be faster and
in another part of the procedures the opposite happened.

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.