From d3f15842fb9346df25f6a5c7fff62e1cd59b9d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Wed, 20 Nov 2024 16:04:57 +0100 Subject: [PATCH] libkorder, k_order_welfare: avoid unnecessary copies in pass-by-value Automatically detected by clang-tidy using performance-unnecessary-value-param check. --- mex/sources/k_order_welfare/objective_m.cc | 5 +++-- mex/sources/k_order_welfare/objective_m.hh | 2 +- mex/sources/libkorder/dynamic_abstract_class.hh | 5 +++-- mex/sources/libkorder/dynamic_dll.cc | 4 ++-- mex/sources/libkorder/dynamic_dll.hh | 2 +- mex/sources/libkorder/dynamic_m.cc | 12 +++++++----- mex/sources/libkorder/dynamic_m.hh | 2 +- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/mex/sources/k_order_welfare/objective_m.cc b/mex/sources/k_order_welfare/objective_m.cc index 8d6709e561..4788462d14 100644 --- a/mex/sources/k_order_welfare/objective_m.cc +++ b/mex/sources/k_order_welfare/objective_m.cc @@ -21,6 +21,7 @@ #include <array> #include <cassert> #include <type_traits> +#include <utility> #include "dynare_exception.hh" @@ -30,13 +31,13 @@ ObjectiveMFile::ObjectiveMFile(const std::string& modName, int kOrder_arg, const mxArray* objective_g1_sparse_rowval_mx_arg, const mxArray* objective_g1_sparse_colval_mx_arg, const mxArray* objective_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> objective_gN_sparse_indices_arg) : + std::vector<const mxArray*> objective_gN_sparse_indices_arg) : ObjectiveMFilename {modName + ".objective.sparse.static"}, kOrder {kOrder_arg}, objective_g1_sparse_rowval_mx {objective_g1_sparse_rowval_mx_arg}, objective_g1_sparse_colval_mx {objective_g1_sparse_colval_mx_arg}, objective_g1_sparse_colptr_mx {objective_g1_sparse_colptr_mx_arg}, - objective_gN_sparse_indices {objective_gN_sparse_indices_arg} + objective_gN_sparse_indices {move(objective_gN_sparse_indices_arg)} { } diff --git a/mex/sources/k_order_welfare/objective_m.hh b/mex/sources/k_order_welfare/objective_m.hh index d720f910b2..1fc1500545 100644 --- a/mex/sources/k_order_welfare/objective_m.hh +++ b/mex/sources/k_order_welfare/objective_m.hh @@ -44,7 +44,7 @@ public: const mxArray* objective_g1_sparse_rowval_mx_arg, const mxArray* objective_g1_sparse_colval_mx_arg, const mxArray* objective_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> objective_gN_sparse_indices_arg); + std::vector<const mxArray*> objective_gN_sparse_indices_arg); void eval(const Vector& y, const Vector& x, const Vector& params, Vector& residual, const std::vector<int>& dynToDynpp, TensorContainer<FSSparseTensor>& derivatives) const noexcept(false); diff --git a/mex/sources/libkorder/dynamic_abstract_class.hh b/mex/sources/libkorder/dynamic_abstract_class.hh index 1a1aa9a175..5f82c1810d 100644 --- a/mex/sources/libkorder/dynamic_abstract_class.hh +++ b/mex/sources/libkorder/dynamic_abstract_class.hh @@ -20,6 +20,7 @@ #ifndef DYNAMIC_ABSTRACT_CLASS_HH #define DYNAMIC_ABSTRACT_CLASS_HH +#include <utility> #include <vector> #include "dynmex.h" @@ -41,12 +42,12 @@ public: DynamicModelAC(int order_arg, const mxArray* dynamic_g1_sparse_rowval_mx_arg, const mxArray* dynamic_g1_sparse_colval_mx_arg, const mxArray* dynamic_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> dynamic_gN_sparse_indices_arg) : + std::vector<const mxArray*> dynamic_gN_sparse_indices_arg) : order {order_arg}, dynamic_g1_sparse_rowval_mx {dynamic_g1_sparse_rowval_mx_arg}, dynamic_g1_sparse_colval_mx {dynamic_g1_sparse_colval_mx_arg}, dynamic_g1_sparse_colptr_mx {dynamic_g1_sparse_colptr_mx_arg}, - dynamic_gN_sparse_indices {dynamic_gN_sparse_indices_arg} {}; + dynamic_gN_sparse_indices {move(dynamic_gN_sparse_indices_arg)} {}; virtual ~DynamicModelAC() = default; virtual void eval(const Vector& y, const Vector& x, const Vector& params, const Vector& ySteady, Vector& residual, const std::map<int, int>& dynToDynpp, diff --git a/mex/sources/libkorder/dynamic_dll.cc b/mex/sources/libkorder/dynamic_dll.cc index a50116d07d..b5317d3d75 100644 --- a/mex/sources/libkorder/dynamic_dll.cc +++ b/mex/sources/libkorder/dynamic_dll.cc @@ -26,10 +26,10 @@ DynamicModelDLL::DynamicModelDLL(const std::string& modName, int order_arg, const mxArray* dynamic_g1_sparse_rowval_mx_arg, const mxArray* dynamic_g1_sparse_colval_mx_arg, const mxArray* dynamic_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> dynamic_gN_sparse_indices_arg, + std::vector<const mxArray*> dynamic_gN_sparse_indices_arg, int ntt) : DynamicModelAC {order_arg, dynamic_g1_sparse_rowval_mx_arg, dynamic_g1_sparse_colval_mx_arg, - dynamic_g1_sparse_colptr_mx_arg, dynamic_gN_sparse_indices_arg}, + dynamic_g1_sparse_colptr_mx_arg, move(dynamic_gN_sparse_indices_arg)}, dynamic_fcts(order + 1), dynamic_fcts_tt(order + 1), tt_tmp(ntt), diff --git a/mex/sources/libkorder/dynamic_dll.hh b/mex/sources/libkorder/dynamic_dll.hh index 9f3f365171..2a17029019 100644 --- a/mex/sources/libkorder/dynamic_dll.hh +++ b/mex/sources/libkorder/dynamic_dll.hh @@ -68,7 +68,7 @@ public: const mxArray* dynamic_g1_sparse_rowval_mx_arg, const mxArray* dynamic_g1_sparse_colval_mx_arg, const mxArray* dynamic_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> dynamic_gN_sparse_indices_arg, int ntt); + std::vector<const mxArray*> dynamic_gN_sparse_indices_arg, int ntt); ~DynamicModelDLL() override; void eval(const Vector& y, const Vector& x, const Vector& params, const Vector& ySteady, diff --git a/mex/sources/libkorder/dynamic_m.cc b/mex/sources/libkorder/dynamic_m.cc index 4cafa3c36b..adafd2f20e 100644 --- a/mex/sources/libkorder/dynamic_m.cc +++ b/mex/sources/libkorder/dynamic_m.cc @@ -21,17 +21,19 @@ #include <array> #include <cassert> #include <type_traits> +#include <utility> #include "dynare_exception.hh" #include "dynamic_m.hh" -DynamicModelMFile::DynamicModelMFile( - const std::string& modName, int order_arg, const mxArray* dynamic_g1_sparse_rowval_mx_arg, - const mxArray* dynamic_g1_sparse_colval_mx_arg, const mxArray* dynamic_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> dynamic_gN_sparse_indices_arg) : +DynamicModelMFile::DynamicModelMFile(const std::string& modName, int order_arg, + const mxArray* dynamic_g1_sparse_rowval_mx_arg, + const mxArray* dynamic_g1_sparse_colval_mx_arg, + const mxArray* dynamic_g1_sparse_colptr_mx_arg, + std::vector<const mxArray*> dynamic_gN_sparse_indices_arg) : DynamicModelAC {order_arg, dynamic_g1_sparse_rowval_mx_arg, dynamic_g1_sparse_colval_mx_arg, - dynamic_g1_sparse_colptr_mx_arg, dynamic_gN_sparse_indices_arg}, + dynamic_g1_sparse_colptr_mx_arg, move(dynamic_gN_sparse_indices_arg)}, DynamicMFilename {modName + ".sparse.dynamic"} { } diff --git a/mex/sources/libkorder/dynamic_m.hh b/mex/sources/libkorder/dynamic_m.hh index 1e00eecdd5..46bdd3bfe7 100644 --- a/mex/sources/libkorder/dynamic_m.hh +++ b/mex/sources/libkorder/dynamic_m.hh @@ -41,7 +41,7 @@ public: const mxArray* dynamic_g1_sparse_rowval_mx_arg, const mxArray* dynamic_g1_sparse_colval_mx_arg, const mxArray* dynamic_g1_sparse_colptr_mx_arg, - const std::vector<const mxArray*> dynamic_gN_sparse_indices_arg); + std::vector<const mxArray*> dynamic_gN_sparse_indices_arg); void eval(const Vector& y, const Vector& x, const Vector& params, const Vector& ySteady, Vector& residual, const std::map<int, int>& dynToDynpp, TensorContainer<FSSparseTensor>& derivatives) noexcept(false) override; -- GitLab