Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Q: Improving Speed

Author: Peter McKenzie

Date: 03:48:12 07/20/99

Go up one level in this thread


On July 19, 1999 at 16:00:31, Scott Gasch wrote:

>On July 19, 1999 at 02:27:56, Peter McKenzie wrote:
>>It all depends, of course :-)
>>LambChop has what I would consider to be a slow NPS rate, and would do about
>>25,000 NPS on that machine.  This is partly because I try to have a smart
>>evaluation, and partly because I've never been totally hung up on speed.  Fast
>>programs are approximately 10 times faster I think.
>
>I have messed around a little with the compiler options and a rewrite of the
>InCheck function and am now at about 55k nps.
>
>>- hash the pawn structure evaluation in a separate hash table
>
>I don't know what you mean by this...

A hash table is just a smart way of caching information.
Many positions in the search tree have the same pawn structure, so it makes
sense to store pawn structure scores with the hope of reusing them thereby
saving time.

>
>>- compute more stuff incrementally (update piece square scores in make/unmake
>>function etc)
>
>This is a good idea.  Thanks.
>
>>Maybe move ordering is slowing you down - take it out and see how the NPS
>
>I am pretty sure move ordering is not a factor... I am pretty careful here and
>the code is fast.

How do you know the code is fast?  Have you profiled it?  Or does it just look
fast?  My advice is to get a decent amount of quantitative evidence.  It may
just confirm your initial feeling, or it may surprise you.  Either way, you'll
know for sure.

If you really are doing a full sort on your move list, you can be sure you are
wasting alot of time!!!

>
>>A basic thing: do you have a list of pieces (as well as the basic board
>>representation)?  In LambChop I have 4 lists: white pieces (excludes pawns, the
>>king is always the first in the list), black pieces, white pawns, black pawns.
>>I find these data structures handy for alot of things.
>
>I have no lists, just a board and the locations of the two kings.  I have been
>thinking about putting the locations of all pieces in a list but it seems that
>this might be more overhead than it's worth.  No?

Well, its really a case of try it and see.
But remember that currently every time you generate moves, you must loop over
your entire board testing the contents of each square to see if it is occupied
by a piece of the appropriate colour.  This is a non-trivial amount of work, and
it happens tens of thousands of times every second :-)

>
>>What is your basic board representation? 0x88 is nice, although I use
>>Board[120].  There are different tricks for each type of representation...
>
>Board representation is 0x88.
>
>Thanks,
>Scott



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.