From 655e896fb57ede428f889c6c7598f8954784e0dd Mon Sep 17 00:00:00 2001 From: Micha White Date: Thu, 21 Dec 2023 19:31:09 -0500 Subject: Remove some memory allocations --- engine/src/eval.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'engine/src/eval.rs') diff --git a/engine/src/eval.rs b/engine/src/eval.rs index 4d7d540..01f07f6 100644 --- a/engine/src/eval.rs +++ b/engine/src/eval.rs @@ -171,17 +171,20 @@ pub fn negamax( let turn = board.turn(); let mut best_eval = Evaluation::NULL_MIN; let mut best_move = None; - let moves: Arc<[Move]> = if let Some(moves) = allowed_moves { - moves - } else { - PossibleMoves::moves(board).into_iter().collect() - }; - if moves.is_empty() { + let sort_fn = |m: &Move| unsafe { sort_moves(m, board, table) }; + let sorter: LazySort = + if let Some(moves) = allowed_moves { + LazySort::new(moves.iter().cloned(), sort_fn) + } else { + let moves = PossibleMoves::moves(board); + LazySort::new(moves, sort_fn) + }; + + if sorter.is_empty() { return (Evaluation::LOSS, None); } - let sorter = LazySort::new(&moves, |m| unsafe { sort_moves(m, board, table) }); for current_move in sorter.into_iter() { if cancel_flag.load(std::sync::atomic::Ordering::Acquire) { return (best_eval, best_move); -- cgit v1.2.3