mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Remove temporary shelter array
Remove temporary array of shelters and avoid iterating over it each time to find if the shelter values after castling are better than the current value. Work done on top of https://github.com/official-stockfish/Stockfish/pull/2277 Speed benchmark did not measure any difference. No functional change
This commit is contained in:
parent
e6f4b5f463
commit
5d1568632c
1 changed files with 6 additions and 10 deletions
|
@ -231,21 +231,17 @@ Score Entry::do_king_safety(const Position& pos) {
|
||||||
Square ksq = pos.square<KING>(Us);
|
Square ksq = pos.square<KING>(Us);
|
||||||
kingSquares[Us] = ksq;
|
kingSquares[Us] = ksq;
|
||||||
castlingRights[Us] = pos.castling_rights(Us);
|
castlingRights[Us] = pos.castling_rights(Us);
|
||||||
|
auto compare = [](Score a, Score b) { return mg_value(a) <= mg_value(b); };
|
||||||
|
|
||||||
Score shelters[3] = { evaluate_shelter<Us>(pos, ksq),
|
Score shelter = evaluate_shelter<Us>(pos, ksq);
|
||||||
make_score(-VALUE_INFINITE, 0),
|
|
||||||
make_score(-VALUE_INFINITE, 0) };
|
|
||||||
|
|
||||||
// If we can castle use the bonus after castling if it is bigger
|
// If we can castle use the bonus after castling if it is bigger
|
||||||
|
|
||||||
if (pos.can_castle(Us & KING_SIDE))
|
if (pos.can_castle(Us & KING_SIDE))
|
||||||
shelters[1] = evaluate_shelter<Us>(pos, relative_square(Us, SQ_G1));
|
shelter = std::max(shelter, evaluate_shelter<Us>(pos, relative_square(Us, SQ_G1)), compare);
|
||||||
|
|
||||||
if (pos.can_castle(Us & QUEEN_SIDE))
|
if (pos.can_castle(Us & QUEEN_SIDE))
|
||||||
shelters[2] = evaluate_shelter<Us>(pos, relative_square(Us, SQ_C1));
|
shelter = std::max(shelter, evaluate_shelter<Us>(pos, relative_square(Us, SQ_C1)), compare);
|
||||||
|
|
||||||
for (int i : {1, 2})
|
|
||||||
if (mg_value(shelters[i]) > mg_value(shelters[0]))
|
|
||||||
shelters[0] = shelters[i];
|
|
||||||
|
|
||||||
// In endgame we like to bring our king near our closest pawn
|
// In endgame we like to bring our king near our closest pawn
|
||||||
Bitboard pawns = pos.pieces(Us, PAWN);
|
Bitboard pawns = pos.pieces(Us, PAWN);
|
||||||
|
@ -256,7 +252,7 @@ Score Entry::do_king_safety(const Position& pos) {
|
||||||
else while (pawns)
|
else while (pawns)
|
||||||
minPawnDist = std::min(minPawnDist, distance(ksq, pop_lsb(&pawns)));
|
minPawnDist = std::min(minPawnDist, distance(ksq, pop_lsb(&pawns)));
|
||||||
|
|
||||||
return shelters[0] - make_score(0, 16 * minPawnDist);
|
return shelter - make_score(0, 16 * minPawnDist);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Explicit template instantiation
|
// Explicit template instantiation
|
||||||
|
|
Loading…
Add table
Reference in a new issue