summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2019-08-22 08:24:12 +0200
committerGitHub <noreply@github.com>2019-08-22 08:24:12 +0200
commit69bca4721b8f5539ab448f23f081c8a8564505c7 (patch)
treeef6e15c757539fda71b64f1463b3feac3eeb1a3e
parent4f267ca9fba199e69012cbcd0a81d006c33f8af6 (diff)
parent3a937e3df5717132cfd2b7459396ee4e5567868c (diff)
downloadATCD-69bca4721b8f5539ab448f23f081c8a8564505c7.tar.gz
Merge pull request #945 from mgrojo/service_repository_optimization
Optimization: avoid nested iteration in ACE_Service_Repository::find_i
-rw-r--r--ACE/ace/Service_Repository.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/ACE/ace/Service_Repository.cpp b/ACE/ace/Service_Repository.cpp
index 6c5fb03df59..bb0755853fe 100644
--- a/ACE/ace/Service_Repository.cpp
+++ b/ACE/ace/Service_Repository.cpp
@@ -275,25 +275,21 @@ ACE_Service_Repository::find_i (const ACE_TCHAR name[],
bool ignore_suspended) const
{
ACE_TRACE ("ACE_Service_Repository::find_i");
- size_t i = 0;
- array_type::const_iterator element = this->service_array_.end ();
+ array_type::const_iterator iter;
- for (i = 0; i < this->service_array_.size(); i++)
+ for (iter = this->service_array_.begin(); iter != this->service_array_.end(); ++iter)
{
- array_type::const_iterator iter = this->service_array_.find (i);
- if (iter != this->service_array_.end ()
- && (*iter).second != 0 // skip any empty slots
+ if ((*iter).second != 0 // skip any empty slots
&& ACE_OS::strcmp (name, (*iter).second->name ()) == 0)
{
- element = iter;
break;
}
}
- if (element != this->service_array_.end ())
+ if (iter != this->service_array_.end ())
{
- slot = i;
- if ((*element).second->fini_called ())
+ slot = (*iter).first;
+ if ((*iter).second->fini_called ())
{
if (srp != 0)
*srp = 0;
@@ -301,10 +297,10 @@ ACE_Service_Repository::find_i (const ACE_TCHAR name[],
}
if (srp != 0)
- *srp = (*element).second;
+ *srp = (*iter).second;
if (ignore_suspended
- && (*element).second->active () == 0)
+ && (*iter).second->active () == 0)
return -2;
return 0;