Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: NPS Tree Walk

Author: Magoo

Date: 05:55:33 05/03/03

Go up one level in this thread


On May 03, 2003 at 08:26:05, Uri Blass wrote:

>On May 03, 2003 at 08:07:31, Magoo wrote:
>
>>On May 03, 2003 at 02:47:29, Tony Werten wrote:
>>
>>>On May 02, 2003 at 22:05:25, Magoo wrote:
>>>
>>>>How bad is this:
>>>>Depth:3, Nodes:99949, Time:40 sec, Nps:2498
>>>
>>>Horrible, sorry.
>>>
>>>From the speed you get (Nps) I guess you are doing too much/ doing things
>>>double. My program is not fast, but still 100x times faster.
>>>
>>>Profiling your code should show up where the problems are. You could also post
>>>the structure of your program here, we might be able to help.
>>>
>>>Good luck,
>>>
>>>Tony
>>
>>I did a profile (for a minmax walk depth=3), im using a 0x88 board, i try to
>>program with alot of "modules", that means i have small functions for almost
>>everything. The function get_piece is called approx 300times/node, which seems
>>resonable, on_board is the !(square & 0x88) test.
>I do not know what get_piece does but
>I do not think that calling one function 300 times/node is reasonable.
>
>If get_piece find the next piece then there is no reason for a special function
>and you can use your piece list.
>
>Even without piece list I see no reason to call get_piece so many times.
>There are not 300 pieces in the board.
>
>Uri

No, this is what it does: get_piece(board brd, int sqr) -> piece,
it takes a pointer to a board and returns the piece on square sqr.
When moving say a Bishop, you have it on square src, i call
get_piece(brd,src-15) to test if it can move to src-15 ( if get_piece returns
EMPTY, it can move there.. else i test for captures etc..).
Im guessing, that doing all of this work is heavy, i mean calling a function 29
Million times.. thats alot of parameter passing.. im going to test a few ugly
things (hard coding some stuff) to see if it improves... I can actually "remove"
both on_board and get_piece, i think that calling the function on_board is more
expensive than the function itselft, (the only thing it does is "return
!(square&0x88").




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.