From b345c3492e7d5a5a49cb5d1336dde30689543914 Mon Sep 17 00:00:00 2001 From: Thibault Hallouin <thibault.hallouin@inrae.fr> Date: Tue, 17 Jan 2023 14:09:47 +0100 Subject: [PATCH] avoid unnecessary initialisation of conditional masks --- include/evalhyd/evalp.hpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/include/evalhyd/evalp.hpp b/include/evalhyd/evalp.hpp index 54d8557..6c52fac 100644 --- a/include/evalhyd/evalp.hpp +++ b/include/evalhyd/evalp.hpp @@ -292,18 +292,19 @@ namespace evalhyd } // retrieve dimensions - std::size_t n_sit = q_prd_.shape(0); - std::size_t n_ltm = q_prd_.shape(1); std::size_t n_tim = q_prd_.shape(3); - std::size_t n_msk = t_msk_.size() > 0 ? t_msk_.shape(2) : - (m_cdt.size() > 0 ? m_cdt.shape(1) : 1); // generate masks from conditions if provided auto gen_msk = [&]() { - XB4 c_msk = xt::zeros<bool>({n_sit, n_ltm, n_msk, n_tim}); - if (m_cdt.size() > 0) + if ((t_msk_.size() < 1) && (m_cdt.size() > 0)) { + std::size_t n_sit = q_prd_.shape(0); + std::size_t n_ltm = q_prd_.shape(1); + std::size_t n_msk = m_cdt.shape(1); + + XB4 c_msk = xt::zeros<bool>({n_sit, n_ltm, n_msk, n_tim}); + for (std::size_t s = 0; s < n_sit; s++) { for (std::size_t l = 0; l < n_ltm; l++) @@ -319,9 +320,13 @@ namespace evalhyd } } } - } - return c_msk; + return c_msk; + } + else + { + return XB4({}); + } }; const XB4 c_msk = gen_msk(); -- GitLab