Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: SPEED !!! help a novice chess programmer =)

Author: Robert Hyatt

Date: 08:40:37 06/18/02

Go up one level in this thread


On June 17, 2002 at 22:39:12, Adriano Bedeschi de Souza wrote:

>WOW, whats wrong with my rotates?

Don't do them like that.  You use them too often.  Incrementally update
the rotated bitmaps just like you do the normal occupied_squares bitmap,
in MakeMove().

That gets rid of this computational bottleneck.



>
>BitBoard rotate45Right(BitBoard *board) {
>
>    int square;
>    BitBoard rotated45Right = 0;
>
>    for(square = 0; square < 64; square++) {
>        if((*board) & mask[square]) {
>            rotated45Right |= mask[rotated45Right_map[square]];
>        }
>    }
>    return rotated45Right;
>}
>
>
>####### GPROF #######
>
>Flat profile:
>
>Each sample counts as 0.01 seconds.
>  %   cumulative   self              self     total
> time   seconds   seconds    calls  Ts/call  Ts/call  name
> 26.85      7.65     7.65                             rotate45Right
> 24.68     14.68     7.03                             rotate90Right
> 23.52     21.38     6.70                             rotate45Left
>  4.46     22.65     1.27                             bishopMoves
>  4.42     23.91     1.26                             mcount
>  3.65     24.95     1.04                             numAttackers
>  2.63     25.70     0.75                             rookMoves
>  1.47     26.12     0.42                             search
>  1.44     26.53     0.41                             LSB
>  1.44     26.94     0.41                             probeHash
>  1.37     27.33     0.39                             makeMove
>  1.12     27.65     0.32                             evaluate
>  0.56     27.81     0.16                             takeBack
>  0.42     27.93     0.12                             isInCheck
>  0.39     28.04     0.11                             count
>  0.21     28.10     0.06                             rotate90Left
>  0.14     28.14     0.04                             __umoddi3
>  0.14     28.18     0.04                             generateWhiteKingCaptures
>  0.14     28.22     0.04                             initializeGeneralBoards
>  0.14     28.26     0.04                             popMoveBack
>  0.11     28.29     0.03                             popMove
>  0.07     28.31     0.02                             generateBlackPawnCaptures
>  0.07     28.33     0.02                             generateBlackQueenCaptures
>  0.07     28.35     0.02
>generateWhiteKingNonCaptures
>  0.07     28.37     0.02                             pow
>  0.07     28.39     0.02                             pushMove
>  0.07     28.41     0.02                             rotateBack45Left
>  0.04     28.42     0.01                             cleanMoveStack
>  0.04     28.43     0.01
>generateBlackBishopCaptures
>  0.04     28.44     0.01
>generateBlackKnightCaptures
>  0.04     28.45     0.01
>generateWhiteKnightNonCaptures
>  0.04     28.46     0.01                             generateWhitePawnCaptures
>  0.04     28.47     0.01                             initializeZobrist
>  0.04     28.48     0.01                             isEmptyMoveStack
>  0.04     28.49     0.01                             pushMoveBack
>
>			Call graph
>
>
>granularity: each sample hit covers 4 byte(s) for 0.04% of 27.23 seconds
>
>index % time    self  children    called     name
>                                                 <spontaneous>
>[1]     28.1    7.65    0.00                 rotate45Right [1]
>-----------------------------------------------
>                                                 <spontaneous>
>[2]     25.8    7.03    0.00                 rotate90Right [2]
>-----------------------------------------------
>                                                 <spontaneous>
>[3]     24.6    6.70    0.00                 rotate45Left [3]
>-----------------------------------------------
>                             5026006             bishopMoves [4]
>[4]      4.7    1.27    0.00       0+5026006 bishopMoves [4]
>                             5026006             bishopMoves [4]
>-----------------------------------------------
>                             4634920             numAttackers [5]
>[5]      3.8    1.04    0.00       0+4634920 numAttackers [5]
>                             4634920             numAttackers [5]
>-----------------------------------------------
>                             2512069             rookMoves [6]
>[6]      2.8    0.75    0.00       0+2512069 rookMoves [6]
>                             2512069             rookMoves [6]
>-----------------------------------------------
>                              738391             search [7]
>[7]      1.5    0.42    0.00       0+738391  search [7]
>                              738391             search [7]
>-----------------------------------------------
>                                                 <spontaneous>
>[8]      1.5    0.41    0.00                 LSB [8]
>-----------------------------------------------
>                                                 <spontaneous>
>[9]      1.5    0.41    0.00                 probeHash [9]
>-----------------------------------------------
>                              169821             makeMove [10]
>[10]     1.4    0.39    0.00       0+169821  makeMove [10]
>                              169821             makeMove [10]
>-----------------------------------------------
>                             1140200             evaluate [11]
>[11]     1.2    0.32    0.00       0+1140200 evaluate [11]
>                             1140200             evaluate [11]
>-----------------------------------------------
>                               84614             takeBack [12]
>[12]     0.6    0.16    0.00       0+84614   takeBack [12]
>                               84614             takeBack [12]
>-----------------------------------------------
>                              337054             isInCheck [13]
>[13]     0.4    0.12    0.00       0+337054  isInCheck [13]
>                              337054             isInCheck [13]
>-----------------------------------------------
>                                                 <spontaneous>
>[14]     0.4    0.11    0.00                 count [14]
>-----------------------------------------------
>                                                 <spontaneous>
>[15]     0.2    0.06    0.00                 rotate90Left [15]
>-----------------------------------------------
>                                                 <spontaneous>
>[16]     0.1    0.04    0.00                 __umoddi3 [16]
>-----------------------------------------------
>                                6646             generateWhiteKingCaptures [17]
>[17]     0.1    0.04    0.00       0+6646    generateWhiteKingCaptures [17]
>                                6646             generateWhiteKingCaptures [17]
>-----------------------------------------------
>                               83152             initializeGeneralBoards [18]
>[18]     0.1    0.04    0.00       0+83152   initializeGeneralBoards [18]
>                               83152             initializeGeneralBoards [18]
>-----------------------------------------------
>                                                 <spontaneous>
>[19]     0.1    0.04    0.00                 popMoveBack [19]
>-----------------------------------------------
>                                                 <spontaneous>
>[20]     0.1    0.03    0.00                 popMove [20]
>-----------------------------------------------
>                                2158             generateBlackPawnCaptures [21]
>[21]     0.1    0.02    0.00       0+2158    generateBlackPawnCaptures [21]
>                                2158             generateBlackPawnCaptures [21]
>-----------------------------------------------
>                               12206             generateBlackQueenCaptures [22]
>[22]     0.1    0.02    0.00       0+12206   generateBlackQueenCaptures [22]
>                               12206             generateBlackQueenCaptures [22]
>-----------------------------------------------
>                               16354             generateWhiteKingNonCaptures
>[23]
>[23]     0.1    0.02    0.00       0+16354   generateWhiteKingNonCaptures [23]
>                               16354             generateWhiteKingNonCaptures
>[23]
>-----------------------------------------------
>                                                 <spontaneous>
>[24]     0.1    0.02    0.00                 pow [24]
>-----------------------------------------------
>                                                 <spontaneous>
>[25]     0.1    0.02    0.00                 pushMove [25]
>-----------------------------------------------
>                                                 <spontaneous>
>[26]     0.1    0.02    0.00                 rotateBack45Left [26]
>-----------------------------------------------
>                                                 <spontaneous>
>[27]     0.0    0.01    0.00                 cleanMoveStack [27]
>-----------------------------------------------
>                               16134             generateBlackBishopCaptures
>[28]
>[28]     0.0    0.01    0.00       0+16134   generateBlackBishopCaptures [28]
>                               16134             generateBlackBishopCaptures
>[28]
>-----------------------------------------------
>                                8087             generateBlackKnightCaptures
>[29]
>[29]     0.0    0.01    0.00       0+8087    generateBlackKnightCaptures [29]
>                                8087             generateBlackKnightCaptures
>[29]
>-----------------------------------------------
>                               70848             generateWhiteKnightNonCaptures
>[30]
>[30]     0.0    0.01    0.00       0+70848   generateWhiteKnightNonCaptures [30]
>                               70848             generateWhiteKnightNonCaptures
>[30]
>-----------------------------------------------
>                                2424             generateWhitePawnCaptures [31]
>[31]     0.0    0.01    0.00       0+2424    generateWhitePawnCaptures [31]
>                                2424             generateWhitePawnCaptures [31]
>-----------------------------------------------
>                                1537             initializeZobrist [32]
>[32]     0.0    0.01    0.00       0+1537    initializeZobrist [32]
>                                1537             initializeZobrist [32]
>-----------------------------------------------
>                                                 <spontaneous>
>[33]     0.0    0.01    0.00                 isEmptyMoveStack [33]
>-----------------------------------------------
>                                                 <spontaneous>
>[34]     0.0    0.01    0.00                 pushMoveBack [34]
>-----------------------------------------------
>                                   6             checkResult [89]
>[89]     0.0    0.00    0.00       0+6       checkResult [89]
>                                   6             checkResult [89]
>-----------------------------------------------
>                                   4             generateBlackBishopMoves [105]
>[105]    0.0    0.00    0.00       0+4       generateBlackBishopMoves [105]
>                                   4             generateBlackBishopMoves [105]
>-----------------------------------------------
>                               26924             generateBlackBishopNonCaptures
>[106]
>[106]    0.0    0.00    0.00       0+26924   generateBlackBishopNonCaptures
>[106]
>                               26924             generateBlackBishopNonCaptures
>[106]
>-----------------------------------------------
>                               23760             generateBlackCaptures [107]
>[107]    0.0    0.00    0.00       0+23760   generateBlackCaptures [107]
>                               23760             generateBlackCaptures [107]
>-----------------------------------------------
>                                3960             generateBlackKingCaptures [108]
>[108]    0.0    0.00    0.00       0+3960    generateBlackKingCaptures [108]
>                                3960             generateBlackKingCaptures [108]
>-----------------------------------------------
>                                   1             generateBlackKingMoves [109]
>[109]    0.0    0.00    0.00       0+1       generateBlackKingMoves [109]
>                                   1             generateBlackKingMoves [109]
>-----------------------------------------------
>                                6010             generateBlackKingNonCaptures
>[110]
>[110]    0.0    0.00    0.00       0+6010    generateBlackKingNonCaptures [110]
>                                6010             generateBlackKingNonCaptures
>[110]
>-----------------------------------------------
>                                  10             generateBlackKnightMoves [111]
>[111]    0.0    0.00    0.00       0+10      generateBlackKnightMoves [111]
>                                  10             generateBlackKnightMoves [111]
>-----------------------------------------------
>                               41529             generateBlackKnightNonCaptures
>[112]
>[112]    0.0    0.00    0.00       0+41529   generateBlackKnightNonCaptures
>[112]
>                               41529             generateBlackKnightNonCaptures
>[112]
>-----------------------------------------------
>                                   7             generateBlackMoves [113]
>[113]    0.0    0.00    0.00       0+7       generateBlackMoves [113]
>                                   7             generateBlackMoves [113]
>-----------------------------------------------
>                               23760             generateBlackNonCaptures [114]
>[114]    0.0    0.00    0.00       0+23760   generateBlackNonCaptures [114]
>                               23760             generateBlackNonCaptures [114]
>-----------------------------------------------
>                              112800             generateBlackPawnMoves [115]
>[115]    0.0    0.00    0.00       0+112800  generateBlackPawnMoves [115]
>                              112800             generateBlackPawnMoves [115]
>-----------------------------------------------
>                                   3             generateBlackQueenMoves [116]
>[116]    0.0    0.00    0.00       0+3       generateBlackQueenMoves [116]
>                                   3             generateBlackQueenMoves [116]
>-----------------------------------------------
>                               22224             generateBlackQueenNonCaptures
>[117]
>[117]    0.0    0.00    0.00       0+22224   generateBlackQueenNonCaptures [117]
>                               22224             generateBlackQueenNonCaptures
>[117]
>-----------------------------------------------
>                               15978             generateBlackRookCaptures [118]
>[118]    0.0    0.00    0.00       0+15978   generateBlackRookCaptures [118]
>                               15978             generateBlackRookCaptures [118]
>-----------------------------------------------
>                                   4             generateBlackRookMoves [119]
>[119]    0.0    0.00    0.00       0+4       generateBlackRookMoves [119]
>                                   4             generateBlackRookMoves [119]
>-----------------------------------------------
>                               23656             generateBlackRookNonCaptures
>[120]
>[120]    0.0    0.00    0.00       0+23656   generateBlackRookNonCaptures [120]
>                               23656             generateBlackRookNonCaptures
>[120]
>-----------------------------------------------
>                               27880             generateWhiteBishopCaptures
>[121]
>[121]    0.0    0.00    0.00       0+27880   generateWhiteBishopCaptures [121]
>                               27880             generateWhiteBishopCaptures
>[121]
>-----------------------------------------------
>                               57832             generateWhiteBishopNonCaptures
>[123]
>[123]    0.0    0.00    0.00       0+57832   generateWhiteBishopNonCaptures
>[123]
>                               57832             generateWhiteBishopNonCaptures
>[123]
>-----------------------------------------------
>                               39876             generateWhiteCaptures [124]
>[124]    0.0    0.00    0.00       0+39876   generateWhiteCaptures [124]
>                               39876             generateWhiteCaptures [124]
>-----------------------------------------------
>                               13522             generateWhiteKnightCaptures
>[126]
>[126]    0.0    0.00    0.00       0+13522   generateWhiteKnightCaptures [126]
>                               13522             generateWhiteKnightCaptures
>[126]
>-----------------------------------------------
>                               39876             generateWhiteNonCaptures [129]
>[129]    0.0    0.00    0.00       0+39876   generateWhiteNonCaptures [129]
>                               39876             generateWhiteNonCaptures [129]
>-----------------------------------------------
>                              184366             generateWhitePawnMoves [130]
>[130]    0.0    0.00    0.00       0+184366  generateWhitePawnMoves [130]
>                              184366             generateWhitePawnMoves [130]
>-----------------------------------------------
>                               25367             generateWhiteQueenCaptures
>[131]
>[131]    0.0    0.00    0.00       0+25367   generateWhiteQueenCaptures [131]
>                               25367             generateWhiteQueenCaptures
>[131]
>-----------------------------------------------
>                               80383             generateWhiteQueenNonCaptures
>[133]
>[133]    0.0    0.00    0.00       0+80383   generateWhiteQueenNonCaptures [133]
>                               80383             generateWhiteQueenNonCaptures
>[133]
>-----------------------------------------------
>                               26728             generateWhiteRookCaptures [134]
>[134]    0.0    0.00    0.00       0+26728   generateWhiteRookCaptures [134]
>                               26728             generateWhiteRookCaptures [134]
>-----------------------------------------------
>                               36464             generateWhiteRookNonCaptures
>[136]
>[136]    0.0    0.00    0.00       0+36464   generateWhiteRookNonCaptures [136]
>                               36464             generateWhiteRookNonCaptures
>[136]
>-----------------------------------------------
>                                  12             main [145]
>[145]    0.0    0.00    0.00       0+12      main [145]
>                                  12             main [145]
>-----------------------------------------------
>                                  31             think [178]
>[178]    0.0    0.00    0.00       0+31      think [178]
>                                  31             think [178]
>-----------------------------------------------
>
>Index by function name
>
>   [8] LSB                    [30] generateWhiteKnightNonCaptures [9] probeHash
>  [16] __umoddi3              [31] generateWhitePawnCaptures [25] pushMove
>   [4] bishopMoves            [18] initializeGeneralBoards [34] pushMoveBack
>  [27] cleanMoveStack         [32] initializeZobrist       [6] rookMoves
>  [14] count                  [33] isEmptyMoveStack        [3] rotate45Left
>  [11] evaluate               [13] isInCheck               [1] rotate45Right
>  [28] generateBlackBishopCaptures [10] makeMove          [15] rotate90Left
>  [29] generateBlackKnightCaptures (148) mcount            [2] rotate90Right
>  [21] generateBlackPawnCaptures [5] numAttackers         [26] rotateBack45Left
>  [22] generateBlackQueenCaptures [20] popMove             [7] search
>  [17] generateWhiteKingCaptures [19] popMoveBack         [12] takeBack
>  [23] generateWhiteKingNonCaptures [24] pow



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.