Fix unnecessary ConCommand cache misses (#1256)

This commit is contained in:
wanted241 2020-05-09 01:28:45 +03:00 committed by GitHub
parent 13621a1274
commit 5177cfdf97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 16 deletions

View File

@ -108,20 +108,20 @@ public:
listener = listener->next; listener = listener->next;
} }
while (iter != tracked_bases.end()) while (iter != tracked_bases.end())
{ {
if ((*iter)->pBase == pBase) if ((*iter)->pBase == pBase)
{ {
pInfo = (*iter); pInfo = (*iter);
iter = tracked_bases.erase(iter); iter = tracked_bases.erase(iter);
pInfo->cls->OnUnlinkConCommandBase(pBase, pBase->GetName()); pInfo->cls->OnUnlinkConCommandBase(pBase, pBase->GetName());
delete pInfo; delete pInfo;
} }
else else
{ {
iter++; iter++;
} }
} }
} }
void AddTarget(ConCommandBase *pBase, IConCommandTracker *cls) void AddTarget(ConCommandBase *pBase, IConCommandTracker *cls)

View File

@ -182,11 +182,19 @@ private:
{ {
static inline bool matches(const char *name, ConCommandBase *base) static inline bool matches(const char *name, ConCommandBase *base)
{ {
return strcmp(name, base->GetName()) == 0; const char *conCommandChars = base->GetName();
ke::AString conCommandName = ke::AString(conCommandChars).lowercase();
ke::AString input = ke::AString(name).lowercase();
return conCommandName == input;
} }
static inline uint32_t hash(const detail::CharsAndLength &key) static inline uint32_t hash(const detail::CharsAndLength &key)
{ {
return key.hash(); ke::AString original(key.chars());
ke::AString lower = original.lowercase();
return detail::CharsAndLength(lower.chars()).hash();
} }
}; };
NameHashSet<ConCommandBase *, ConCommandPolicy> m_CmdFlags; NameHashSet<ConCommandBase *, ConCommandPolicy> m_CmdFlags;