From f4830fb3b5df8f2a37ca079358bf01da808d7da7 Mon Sep 17 00:00:00 2001 From: Roberto Hueso Gomez Date: Mon, 22 Oct 2018 03:25:59 +0200 Subject: [PATCH] Avoid copies in decision tree main --- .../decision_tree/decision_tree_main.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/mlpack/methods/decision_tree/decision_tree_main.cpp b/src/mlpack/methods/decision_tree/decision_tree_main.cpp index 0e4be96c0c..f8eee66c4d 100644 --- a/src/mlpack/methods/decision_tree/decision_tree_main.cpp +++ b/src/mlpack/methods/decision_tree/decision_tree_main.cpp @@ -180,13 +180,22 @@ static void mlpackMain() { arma::Row weights = std::move(CLI::GetParam>("weights")); - model->tree = DecisionTree<>(trainingSet, model->info, labels, - numClasses, weights, minLeafSize, minimumGainSplit); + if (CLI::HasParam("print_training_error")) + model->tree = DecisionTree<>(trainingSet, model->info, labels, + numClasses, std::move(weights), minLeafSize, minimumGainSplit); + else + model->tree = DecisionTree<>(std::move(trainingSet), model->info, + std::move(labels), numClasses, std::move(weights), minLeafSize, + minimumGainSplit); } else { - model->tree = DecisionTree<>(trainingSet, model->info, labels, - numClasses, minLeafSize, minimumGainSplit); + if (CLI::HasParam("print_training_error")) + model->tree = DecisionTree<>(trainingSet, model->info, labels, + numClasses, minLeafSize, minimumGainSplit); + else + model->tree = DecisionTree<>(std::move(trainingSet), model->info, + std::move(labels), numClasses, minLeafSize, minimumGainSplit); } // Do we need to print training error?