Author: Magoo
Date: 02:02:24 05/05/03
Go up one level in this thread
On May 04, 2003 at 22:17:21, Zach Wegner wrote:
>>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.
>>
>>Flat profile:
>>
>>Each sample counts as 0.01 seconds.
>> % cumulative self self total
>> time seconds seconds calls s/call s/call name
>> 11.74 1.20 1.20 29440891 0.00 0.00 get_piece
>> 10.18 2.24 1.04 31783554 0.00 0.00 on_board
>> 7.83 3.04 0.80 97862 0.00 0.00 eval
>> 7.24 3.78 0.74 777565 0.00 0.00 move_pawn
>> 7.14 4.51 0.73 497315 0.00 0.00 move_pieces
>> 6.85 5.21 0.70 427282 0.00 0.00 not_in_check
>> 6.75 5.90 0.69 100361 0.00 0.00 move_generator
>> 5.77 6.49 0.59 7291134 0.00 0.00 is_different
>> 3.91 6.89 0.40 10203170 0.00 0.00 is_empty
>> 3.42 7.24 0.35 100360 0.00 0.00 all_moves_legal
>> 3.33 7.58 0.34 7898776 0.00 0.00 getbits
>> 3.03 7.89 0.31 3471247 0.00 0.00 new_move
>> 2.74 8.17 0.28 4652405 0.00 0.00 is_null_move
>> 2.64 8.44 0.27 196244 0.00 0.00 move_knight
>> 2.25 8.67 0.23 4349648 0.00 0.00 legal_move
>> 2.05 8.88 0.21 4449597 0.00 0.00 look
>> 1.66 9.05 0.17 100361 0.00 0.00 move_king
>> 1.47 9.20 0.15 2170466 0.00 0.00 is_white_piece
>> 1.37 9.34 0.14 4265234 0.00 0.00 add_move
>> 1.27 9.47 0.13 3021733 0.00 0.00 getBoard
>> 0.98 9.57 0.10 786271 0.00 0.00 score_cap
>> 0.88 9.66 0.09 2796571 0.00 0.00 hist_score2
>> 0.88 9.75 0.09 2796571 0.00 0.00 set_move_score
>> 0.88 9.84 0.09 100360 0.00 0.00 undo_move
>> 0.78 9.92 0.08 1035659 0.00 0.00 is_black_piece
>> 0.68 9.99 0.07 100360 0.00 0.00 do_move
>
>I see that you have way too many functions. It is not a bottleneck, as long as
>they are inlined or macros. What I also see is that your move_generator count is
>greater than your node count, so I guess you are regenerating moves after every
>undo_move. This is your source of trouble, I guarantee it. You need to (1) make
>a local list of moves that is passed to the move_generator, e.g.
>
>void search(int depth etc.)
>{
>int movecount;
>MOVE movelist[MAXMOVES];
>...
>genrate_moves(&movelist, &movecount);
>for (x = 0; x < movecount; x++)
>...
>}
>
>or (2) make a global list organized by ply as in TSCP.
No, thats not the problem, i have a global move stack.
This page took 0.01 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.