From e0f7fac11a73ffd6b1570b1f2118e20a5b0eb5d8 Mon Sep 17 00:00:00 2001 From: Mauller <26652186+Mauller@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:15:56 +0100 Subject: [PATCH] perf(script): improve script search performance by 7-8x (#3096) --- Generals/Code/GameEngine/Include/GameLogic/Scripts.h | 6 +++--- Generals/Code/GameEngine/Include/GameLogic/SidesList.h | 2 +- GeneralsMD/Code/GameEngine/Include/GameLogic/Scripts.h | 6 +++--- GeneralsMD/Code/GameEngine/Include/GameLogic/SidesList.h | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Generals/Code/GameEngine/Include/GameLogic/Scripts.h b/Generals/Code/GameEngine/Include/GameLogic/Scripts.h index c2a85ecfd0f..4f061b065b5 100644 --- a/Generals/Code/GameEngine/Include/GameLogic/Scripts.h +++ b/Generals/Code/GameEngine/Include/GameLogic/Scripts.h @@ -142,7 +142,7 @@ class ScriptGroup : public MemoryPoolObject, public Snapshot void setWarnings(Bool warnings) { m_hasWarnings = warnings;} void setNextGroup(ScriptGroup *pGr) {m_nextGroup = pGr;} - AsciiString getName() const { return m_groupName;} + const AsciiString& getName() const { return m_groupName;} Bool isActive() const { return m_isGroupActive;} Bool isSubroutine() const { return m_isGroupSubroutine;} Bool hasWarnings() const { return m_hasWarnings;} @@ -661,7 +661,7 @@ class Script : public MemoryPoolObject, public Snapshot Real getCurTime() {return m_curTime;} Int getDelayEvalSeconds() {return m_delayEvaluationSeconds;} - AsciiString getName() const { return m_scriptName;} + const AsciiString& getName() const { return m_scriptName;} AsciiString getComment() const {return m_comment;} AsciiString getActionComment() const {return m_actionComment;} AsciiString getConditionComment() const {return m_conditionComment;} @@ -691,7 +691,7 @@ class Script : public MemoryPoolObject, public Snapshot OrCondition *findPreviousOrCondition( OrCondition *curOr ); // Support routines for ScriptEngine - - AsciiString getConditionTeamName() {return m_conditionTeamName;} + const AsciiString& getConditionTeamName() const {return m_conditionTeamName;} void setConditionTeamName(AsciiString teamName) {m_conditionTeamName = teamName;} }; diff --git a/Generals/Code/GameEngine/Include/GameLogic/SidesList.h b/Generals/Code/GameEngine/Include/GameLogic/SidesList.h index c91c2aee3ce..5ba8d205448 100644 --- a/Generals/Code/GameEngine/Include/GameLogic/SidesList.h +++ b/Generals/Code/GameEngine/Include/GameLogic/SidesList.h @@ -330,7 +330,7 @@ class BuildListInfo : public MemoryPoolObject, public Snapshot const Coord2D *getRallyOffset() const {return &m_rallyPointOffset;} Real getAngle() const {return m_angle;} Bool isInitiallyBuilt() {return m_isInitiallyBuilt;} - AsciiString getScript() {return m_script;} + const AsciiString& getScript() const {return m_script;} Int getHealth() {return m_health;} Bool getWhiner() {return m_whiner;} Bool getUnsellable() {return m_unsellable;} diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Scripts.h b/GeneralsMD/Code/GameEngine/Include/GameLogic/Scripts.h index 9343b6ff0cc..4edee778114 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameLogic/Scripts.h +++ b/GeneralsMD/Code/GameEngine/Include/GameLogic/Scripts.h @@ -135,7 +135,7 @@ class ScriptGroup : public MemoryPoolObject, public Snapshot void setWarnings(Bool warnings) { m_hasWarnings = warnings;} void setNextGroup(ScriptGroup *pGr) {m_nextGroup = pGr;} - AsciiString getName() const { return m_groupName;} + const AsciiString& getName() const { return m_groupName;} Bool isActive() const { return m_isGroupActive;} Bool isSubroutine() const { return m_isGroupSubroutine;} Bool hasWarnings() const { return m_hasWarnings;} @@ -669,7 +669,7 @@ class Script : public MemoryPoolObject, public Snapshot Real getCurTime() {return m_curTime;} Int getDelayEvalSeconds() {return m_delayEvaluationSeconds;} - AsciiString getName() const { return m_scriptName;} + const AsciiString& getName() const { return m_scriptName;} AsciiString getComment() const {return m_comment;} AsciiString getActionComment() const {return m_actionComment;} AsciiString getConditionComment() const {return m_conditionComment;} @@ -699,7 +699,7 @@ class Script : public MemoryPoolObject, public Snapshot OrCondition *findPreviousOrCondition( OrCondition *curOr ); // Support routines for ScriptEngine - - AsciiString getConditionTeamName() {return m_conditionTeamName;} + const AsciiString& getConditionTeamName() const {return m_conditionTeamName;} void setConditionTeamName(AsciiString teamName) {m_conditionTeamName = teamName;} }; diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/SidesList.h b/GeneralsMD/Code/GameEngine/Include/GameLogic/SidesList.h index 55cbcd800e5..3713fc1cc35 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameLogic/SidesList.h +++ b/GeneralsMD/Code/GameEngine/Include/GameLogic/SidesList.h @@ -330,7 +330,7 @@ class BuildListInfo : public MemoryPoolObject, public Snapshot const Coord2D *getRallyOffset() const {return &m_rallyPointOffset;} Real getAngle() const {return m_angle;} Bool isInitiallyBuilt() {return m_isInitiallyBuilt;} - AsciiString getScript() {return m_script;} + const AsciiString& getScript() const {return m_script;} Int getHealth() {return m_health;} Bool getWhiner() {return m_whiner;} Bool getUnsellable() {return m_unsellable;}