From 07497ce2c529eeb3045b35ae20eba50409cdf608 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sat, 16 Nov 2024 22:03:55 +0100 Subject: [PATCH] perf: `get_kind_tree_root` result caching added --- src/core/include/mp-units/framework/quantity_spec.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/include/mp-units/framework/quantity_spec.h b/src/core/include/mp-units/framework/quantity_spec.h index 835ae2c9..7d99f053 100644 --- a/src/core/include/mp-units/framework/quantity_spec.h +++ b/src/core/include/mp-units/framework/quantity_spec.h @@ -1476,7 +1476,7 @@ template } template -[[nodiscard]] consteval QuantitySpec auto get_kind_tree_root(Q q) +[[nodiscard]] consteval QuantitySpec auto get_kind_tree_root_impl(Q q) { auto defined_as_kind = [](QQ qq) { if constexpr (requires { defined_as_kind_impl(qq); }) @@ -1501,6 +1501,15 @@ template // NOLINTEND(bugprone-branch-clone) } +template +constexpr QuantitySpec auto get_kind_tree_root_result = get_kind_tree_root_impl(Q{}); + +template +[[nodiscard]] consteval QuantitySpec auto get_kind_tree_root(Q) +{ + return get_kind_tree_root_result; +} + } // namespace detail MP_UNITS_EXPORT_BEGIN