From 11ab4cde071be92d4fbd188c4741010833ab8340 Mon Sep 17 00:00:00 2001 From: Carlos Esparza Date: Thu, 9 Oct 2025 12:10:46 -0700 Subject: [PATCH] Avoid unnecessary allocations in AccumulatorStack replacing the vector with an array resulted in a .45+-.10 % speedup. closes https://github.com/official-stockfish/Stockfish/pull/6352 no functional change --- src/nnue/network.h | 2 -- src/nnue/nnue_accumulator.h | 11 +++-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/nnue/network.h b/src/nnue/network.h index c9358823b..6855831d5 100644 --- a/src/nnue/network.h +++ b/src/nnue/network.h @@ -106,8 +106,6 @@ class Network { template friend struct AccumulatorCaches::Cache; - - friend class AccumulatorStack; }; // Definitions of the network types diff --git a/src/nnue/nnue_accumulator.h b/src/nnue/nnue_accumulator.h index 56de0b7d0..7ff95b6ef 100644 --- a/src/nnue/nnue_accumulator.h +++ b/src/nnue/nnue_accumulator.h @@ -25,7 +25,6 @@ #include #include #include -#include #include "../types.h" #include "nnue_architecture.h" @@ -48,7 +47,7 @@ template struct alignas(CacheLineSize) Accumulator { std::int16_t accumulation[COLOR_NB][Size]; std::int32_t psqtAccumulation[COLOR_NB][PSQTBuckets]; - std::array computed; + std::array computed = {}; }; @@ -142,10 +141,6 @@ struct AccumulatorState { class AccumulatorStack { public: - AccumulatorStack() : - accumulators(MAX_PLY + 1), - size{1} {} - [[nodiscard]] const AccumulatorState& latest() const noexcept; void reset() noexcept; @@ -178,8 +173,8 @@ class AccumulatorStack { const FeatureTransformer& featureTransformer, const std::size_t end) noexcept; - std::vector accumulators; - std::size_t size; + std::array accumulators; + std::size_t size = 1; }; } // namespace Stockfish::Eval::NNUE