From 3f4319afea942e54d7ac0a2d6a8ba015f910f43c Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 17 Jan 2025 18:50:11 +0000 Subject: [PATCH] Cache plugins' master flag Avoiding the overhead of checking with esplugin improves sorting performance by 5%. --- src/api/sorting/plugin_sorting_data.cpp | 7 +++---- src/api/sorting/plugin_sorting_data.h | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/api/sorting/plugin_sorting_data.cpp b/src/api/sorting/plugin_sorting_data.cpp index 1f1f1abc..56a1e501 100644 --- a/src/api/sorting/plugin_sorting_data.cpp +++ b/src/api/sorting/plugin_sorting_data.cpp @@ -60,6 +60,7 @@ PluginSortingData::PluginSortingData( #endif plugin_(plugin), name_(plugin == nullptr ? std::string() : plugin->GetName()), + isMaster_(plugin != nullptr && plugin->IsMaster()), group_(userMetadata.GetGroup().value_or( masterlistMetadata.GetGroup().value_or(Group::DEFAULT_NAME))), masterlistLoadAfter_(masterlistMetadata.GetLoadAfterFiles()), @@ -92,12 +93,10 @@ PluginSortingData::PluginSortingData( const std::string& PluginSortingData::GetName() const { return name_; } -bool PluginSortingData::IsMaster() const { - return plugin_ != nullptr && plugin_->IsMaster(); -} +bool PluginSortingData::IsMaster() const { return isMaster_; } bool PluginSortingData::IsBlueprintMaster() const { - return plugin_ != nullptr && plugin_->IsMaster() && + return isMaster_ && plugin_->IsBlueprintPlugin(); } diff --git a/src/api/sorting/plugin_sorting_data.h b/src/api/sorting/plugin_sorting_data.h index 1383e67e..715cbcf9 100644 --- a/src/api/sorting/plugin_sorting_data.h +++ b/src/api/sorting/plugin_sorting_data.h @@ -73,6 +73,7 @@ public: private: const PluginSortingInterface* plugin_{nullptr}; std::string name_; + bool isMaster_{false}; std::string group_; std::vector masterlistLoadAfter_;