From 307f176ef276c72382151353895ef0c29ea8635c Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 30 Aug 2021 10:13:51 -0400
Subject: [PATCH] Reduce map finds when creating new UDP message

---
 indra/llmessage/llsdmessagebuilder.cpp       |  6 ------
 indra/llmessage/llsdmessagebuilder.h         |  4 ++--
 indra/llmessage/lltemplatemessagebuilder.cpp | 19 +++++++------------
 indra/llmessage/lltemplatemessagebuilder.h   |  2 +-
 4 files changed, 10 insertions(+), 21 deletions(-)

diff --git a/indra/llmessage/llsdmessagebuilder.cpp b/indra/llmessage/llsdmessagebuilder.cpp
index 49456c71ed3..ae3e00e9f37 100644
--- a/indra/llmessage/llsdmessagebuilder.cpp
+++ b/indra/llmessage/llsdmessagebuilder.cpp
@@ -49,12 +49,6 @@ LLSDMessageBuilder::LLSDMessageBuilder() :
 {
 }
 
-//virtual
-LLSDMessageBuilder::~LLSDMessageBuilder()
-{
-}
-
-
 // virtual
 void LLSDMessageBuilder::newMessage(const char* name)
 {
diff --git a/indra/llmessage/llsdmessagebuilder.h b/indra/llmessage/llsdmessagebuilder.h
index 9c7c1bfde35..5335dfad3d9 100644
--- a/indra/llmessage/llsdmessagebuilder.h
+++ b/indra/llmessage/llsdmessagebuilder.h
@@ -36,14 +36,14 @@
 class LLMessageTemplate;
 class LLMsgData;
 
-class LLSDMessageBuilder : public LLMessageBuilder
+class LLSDMessageBuilder final : public LLMessageBuilder
 {
 public:
 
 	//CLASS_LOG_TYPE(LLSDMessageBuilder);
 	
 	LLSDMessageBuilder();
-	virtual ~LLSDMessageBuilder();
+	virtual ~LLSDMessageBuilder() = default;
 
 	virtual void newMessage(const char* name);
 
diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp
index 5ac5f6c5803..530f2ae4e9a 100644
--- a/indra/llmessage/lltemplatemessagebuilder.cpp
+++ b/indra/llmessage/lltemplatemessagebuilder.cpp
@@ -68,28 +68,25 @@ void LLTemplateMessageBuilder::newMessage(const char *name)
 	mCurrentSMessageData = NULL;
 
 	char* namep = (char*)name; 
-	if (mMessageTemplates.count(namep) > 0)
+	auto it = mMessageTemplates.find(namep);
+	if (it != mMessageTemplates.end())
 	{
-		mCurrentSMessageTemplate = mMessageTemplates.find(name)->second;
+		mCurrentSMessageTemplate = it->second;
 		mCurrentSMessageData = new LLMsgData(namep);
 		mCurrentSMessageName = namep;
 		mCurrentSDataBlock = NULL;
 		mCurrentSBlockName = NULL;
 
 		// add at one of each block
-		const LLMessageTemplate* msg_template = mMessageTemplates.find(name)->second;
+		const LLMessageTemplate* msg_template = it->second;
 
 		if (msg_template->getDeprecation() != MD_NOTDEPRECATED)
 		{
 			LL_WARNS() << "Sending deprecated message " << namep << LL_ENDL;
 		}
 		
-		LLMessageTemplate::message_block_map_t::const_iterator iter;
-		for(iter = msg_template->mMemberBlocks.begin();
-			iter != msg_template->mMemberBlocks.end();
-			++iter)
+		for(LLMessageBlock* ci : msg_template->mMemberBlocks)
 		{
-			LLMessageBlock* ci = *iter;
 			LLMsgBlkData* tblockp = new LLMsgBlkData(ci->mName, 0);
 			mCurrentSMessageData->addBlock(tblockp);
 		}
@@ -148,11 +145,9 @@ void LLTemplateMessageBuilder::nextBlock(const char* blockname)
 		mCurrentSBlockName = bnamep;
 
 		// add placeholders for each of the variables
-		for (LLMessageBlock::message_variable_map_t::const_iterator iter = template_data->mMemberVariables.begin();
-			 iter != template_data->mMemberVariables.end(); iter++)
+		for (const LLMessageVariable* ci : template_data->mMemberVariables)
 		{
-			LLMessageVariable& ci = **iter;
-			mCurrentSDataBlock->addVariable(ci.getName(), ci.getType());
+			mCurrentSDataBlock->addVariable(ci->getName(), ci->getType());
 		}
 		return;
 	}
diff --git a/indra/llmessage/lltemplatemessagebuilder.h b/indra/llmessage/lltemplatemessagebuilder.h
index 4f614a46575..855ea871448 100644
--- a/indra/llmessage/lltemplatemessagebuilder.h
+++ b/indra/llmessage/lltemplatemessagebuilder.h
@@ -37,7 +37,7 @@ class LLMessageTemplate;
 class LLMsgBlkData;
 class LLMessageTemplate;
 
-class LLTemplateMessageBuilder : public LLMessageBuilder
+class LLTemplateMessageBuilder final : public LLMessageBuilder
 {
 public:
 	
-- 
GitLab