Don't copy a full Position object in print()
Function move_to_san() requires the Position to be passed by referenced because a do/undo move is done inside the function to detect a possible mate and to add to the san string the corresponding '#' suffix. Instead of passing a copy of current position pass directly the original position object after const casting it. This has the advantage to avoid a costly Position copy, on the down side a bench test could report different searched nodes if print(move) is used, due to the additionals do_move() calls. No functional change.sf_3_base
parent
dbbbd3880c
commit
5fc8b27db9
|
@ -400,10 +400,8 @@ void Position::print(Move move) const {
|
|||
sync_cout;
|
||||
|
||||
if (move)
|
||||
{
|
||||
Position p(*this);
|
||||
cout << "\nMove is: " << (sideToMove == BLACK ? ".." : "") << move_to_san(p, move);
|
||||
}
|
||||
cout << "\nMove is: " << (sideToMove == BLACK ? ".." : "")
|
||||
<< move_to_san(*const_cast<Position*>(this), move);
|
||||
|
||||
for (Square sq = SQ_A1; sq <= SQ_H8; sq++)
|
||||
if (piece_on(sq) != NO_PIECE)
|
||||
|
|
Loading…
Reference in New Issue