From bc9fa36c65183a0b8e14b37c9aa2e07ce768463e Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 22 Aug 2022 10:36:41 +0200 Subject: Track tree references that have to be expanded ... as this is relevant for performance of analysis. We log the total numer of trees at performance level and the individual directories at debug level, if requested. --- src/buildtool/build_engine/target_map/TARGETS | 1 + src/buildtool/build_engine/target_map/result_map.hpp | 7 +++++++ src/buildtool/build_engine/target_map/target_map.cpp | 8 ++++++++ src/buildtool/common/statistics.hpp | 6 ++++++ 4 files changed, 22 insertions(+) (limited to 'src') diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS index e57a8c3b..2b201fbf 100644 --- a/src/buildtool/build_engine/target_map/TARGETS +++ b/src/buildtool/build_engine/target_map/TARGETS @@ -46,6 +46,7 @@ , ["src/buildtool/build_engine/base_maps", "targets_file_map"] , ["src/buildtool/build_engine/expression", "expression"] , ["src/buildtool/execution_api/local", "local"] + , ["src/buildtool/logging", "logging"] , ["src/buildtool/multithreading", "async_map_consumer"] , ["src/utils/cpp", "hash_combine"] , ["src/utils/cpp", "path"] diff --git a/src/buildtool/build_engine/target_map/result_map.hpp b/src/buildtool/build_engine/target_map/result_map.hpp index ca55ee74..846a381e 100644 --- a/src/buildtool/build_engine/target_map/result_map.hpp +++ b/src/buildtool/build_engine/target_map/result_map.hpp @@ -16,6 +16,7 @@ #include "src/buildtool/build_engine/expression/expression.hpp" #include "src/buildtool/build_engine/target_map/configured_target.hpp" #include "src/buildtool/build_engine/target_map/target_cache.hpp" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/common/tree.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/multithreading/task.hpp" @@ -252,6 +253,12 @@ class ResultTargetMap { }); result.actions.erase(lastaction, result.actions.end()); + int trees_traversed = Statistics::Instance().TreesAnalysedCounter(); + if (trees_traversed > 0) { + Logger::Log(LogLevel::Performance, + "Analysed {} non-known source trees", + trees_traversed); + } Logger::Log(LogLevel::Info, "Discovered {} actions, {} trees, {} blobs", result.actions.size(), diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index 66e1ec73..8005a032 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -16,6 +16,8 @@ #include "src/buildtool/build_engine/expression/function_map.hpp" #include "src/buildtool/build_engine/target_map/built_in_rules.hpp" #include "src/buildtool/build_engine/target_map/utils.hpp" +#include "src/buildtool/common/statistics.hpp" +#include "src/buildtool/logging/logger.hpp" #include "src/utils/cpp/path.hpp" #include "src/utils/cpp/vector.hpp" @@ -1342,6 +1344,12 @@ void TreeTarget( (*setter)(std::move(analysis_result)); return; } + Logger::Log(LogLevel::Debug, [&key]() { + return fmt::format( + "Source tree reference for non-known tree {}", + key.target.ToString()); + }); + Statistics::Instance().IncrementTreesAnalysedCounter(); using BuildMaps::Target::ConfiguredTarget; diff --git a/src/buildtool/common/statistics.hpp b/src/buildtool/common/statistics.hpp index e34ccd03..071fc199 100644 --- a/src/buildtool/common/statistics.hpp +++ b/src/buildtool/common/statistics.hpp @@ -18,6 +18,7 @@ class Statistics { num_actions_flaky_tainted_ = 0; num_rebuilt_actions_compared_ = 0; num_rebuilt_actions_missing_ = 0; + num_trees_analysed_ = 0; } void IncrementActionsQueuedCounter() noexcept { ++num_actions_queued_; } void IncrementActionsExecutedCounter() noexcept { ++num_actions_executed_; } @@ -37,6 +38,7 @@ class Statistics { void IncrementExportsNotEligibleCounter() noexcept { ++num_exports_not_eligible_; } + void IncrementTreesAnalysedCounter() noexcept { ++num_trees_analysed_; } [[nodiscard]] auto ActionsQueuedCounter() const noexcept -> int { return num_actions_queued_; } @@ -67,6 +69,9 @@ class Statistics { [[nodiscard]] auto ExportsNotEligibleCounter() const noexcept -> int { return num_exports_not_eligible_; } + [[nodiscard]] auto TreesAnalysedCounter() const noexcept -> int { + return num_trees_analysed_; + } private: std::atomic num_actions_queued_{}; @@ -79,6 +84,7 @@ class Statistics { std::atomic num_exports_cached_{}; std::atomic num_exports_uncached_{}; std::atomic num_exports_not_eligible_{}; + std::atomic num_trees_analysed_{}; }; #endif // INCLUDED_SRC_BUILDTOOL_COMMON_STATISTICS_HPP -- cgit v1.2.3