Return a cached reference from PluginSortingData::GetName()

Avoiding the string copies improves sorting performance by 7%.
This commit is contained in:
Oliver Hamlet
2025-01-17 20:18:34 +00:00
parent 379cf32ec7
commit ead4f21250
2 changed files with 4 additions and 2 deletions
+2 -1
View File
@@ -59,6 +59,7 @@ PluginSortingData::PluginSortingData(
const std::vector<std::string>& loadOrder) :
#endif
plugin_(plugin),
name_(plugin == nullptr ? std::string() : plugin->GetName()),
group_(userMetadata.GetGroup().value_or(
masterlistMetadata.GetGroup().value_or(Group::DEFAULT_NAME))),
masterlistLoadAfter_(masterlistMetadata.GetLoadAfterFiles()),
@@ -89,7 +90,7 @@ PluginSortingData::PluginSortingData(
overrideRecordCount_ = plugin->GetOverrideRecordCount();
}
std::string PluginSortingData::GetName() const { return plugin_->GetName(); }
const std::string& PluginSortingData::GetName() const { return name_; }
bool PluginSortingData::IsMaster() const {
return plugin_ != nullptr && plugin_->IsMaster();
+2 -1
View File
@@ -49,7 +49,7 @@ public:
const std::vector<std::string>& loadOrder);
#endif
std::string GetName() const;
const std::string& GetName() const;
bool IsMaster() const;
bool IsBlueprintMaster() const;
bool LoadsArchive() const;
@@ -72,6 +72,7 @@ public:
private:
const PluginSortingInterface* plugin_{nullptr};
std::string name_;
std::string group_;
std::vector<File> masterlistLoadAfter_;