[paludis-commits] r4549 - in trunk: . paludis
dleverton at svn.pioto.org
dleverton at svn.pioto.org
Wed Apr 9 21:09:06 UTC 2008
Author: dleverton
Date: 2008-04-09 21:09:05 +0000 (Wed, 09 Apr 2008)
New Revision: 4549
Modified:
trunk/ChangeLog
trunk/paludis/ndbam.cc
Log:
Speed up NDBAM a little.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-04-07 20:40:44 UTC (rev 4548)
+++ trunk/ChangeLog 2008-04-09 21:09:05 UTC (rev 4549)
@@ -5,6 +5,10 @@
only listed in SVN log. For a summary of what has changed between releases,
see the NEWS file. This file is occasionally pruned to ChangeLog.old.bz2.
+2008-04-09 David Leverton
+
+ * paludis/: Speed up NDBAM a little.
+
2008-04-07 David Leverton
* paludis/, paludis/util/: Improve speed and memory usage for
Modified: trunk/paludis/ndbam.cc
===================================================================
--- trunk/paludis/ndbam.cc 2008-04-07 20:40:44 UTC (rev 4548)
+++ trunk/paludis/ndbam.cc 2008-04-09 21:09:05 UTC (rev 4549)
@@ -179,8 +179,8 @@
Lock l(_imp->category_names_mutex);
CategoryContentsMap::iterator cc_i(_imp->category_contents_map.find(c));
- if (_imp->category_contents_map.end() == cc_i)
- throw InternalError(PALUDIS_HERE, "has_category_named(" + stringify(c) + ") but got category_contents_map end");
+ if (_imp->category_contents_map.end() == cc_i || ! cc_i->second)
+ throw InternalError(PALUDIS_HERE, "has_category_named(" + stringify(c) + ") but got category_contents_map end or zero pointer");
CategoryContents & cc(*cc_i->second);
l.acquire_then_release_old(cc.mutex);
@@ -219,8 +219,9 @@
NDBAM::has_category_named(const CategoryNamePart & c)
{
Lock l(_imp->category_names_mutex);
- if (_imp->category_contents_map.end() != _imp->category_contents_map.find(c))
- return true;
+ CategoryContentsMap::const_iterator it(_imp->category_contents_map.find(c));
+ if (_imp->category_contents_map.end() != it)
+ return it->second;
if (! _imp->category_names)
{
@@ -229,6 +230,7 @@
_imp->category_contents_map.insert(std::make_pair(c, new CategoryContents));
return true;
}
+ _imp->category_contents_map.insert(std::make_pair(c, tr1::shared_ptr<CategoryContents>()));
}
return false;
@@ -242,14 +244,15 @@
Lock l(_imp->category_names_mutex);
CategoryContentsMap::iterator cc_i(_imp->category_contents_map.find(q.category));
- if (_imp->category_contents_map.end() == cc_i)
- throw InternalError(PALUDIS_HERE, "has_category_named(" + stringify(q.category) + ") but got category_contents_map end");
+ if (_imp->category_contents_map.end() == cc_i || ! cc_i->second)
+ throw InternalError(PALUDIS_HERE, "has_category_named(" + stringify(q.category) + ") but got category_contents_map end or zero pointer");
CategoryContents & cc(*cc_i->second);
l.acquire_then_release_old(cc.mutex);
- if (cc.package_contents_map.end() != cc.package_contents_map.find(q))
- return true;
+ PackageContentsMap::const_iterator it(cc.package_contents_map.find(q));
+ if (cc.package_contents_map.end() != it)
+ return it->second;
if (! cc.package_names)
{
@@ -258,6 +261,7 @@
cc.package_contents_map.insert(std::make_pair(q, new PackageContents));
return true;
}
+ cc.package_contents_map.insert(std::make_pair(q, tr1::shared_ptr<PackageContents>()));
}
return false;
@@ -280,14 +284,14 @@
Lock l(_imp->category_names_mutex);
CategoryContentsMap::iterator cc_i(_imp->category_contents_map.find(q.category));
- if (_imp->category_contents_map.end() == cc_i)
- throw InternalError(PALUDIS_HERE, "has_package_named(" + stringify(q) + ") but got category_contents_map end");
+ if (_imp->category_contents_map.end() == cc_i || ! cc_i->second)
+ throw InternalError(PALUDIS_HERE, "has_package_named(" + stringify(q) + ") but got category_contents_map end or zero pointer");
CategoryContents & cc(*cc_i->second);
l.acquire_then_release_old(cc.mutex);
PackageContentsMap::iterator pc_i(cc.package_contents_map.find(q));
- if (cc.package_contents_map.end() == pc_i)
- throw InternalError(PALUDIS_HERE, "has_package_named(" + stringify(q) + ") but got package_contents_map end");
+ if (cc.package_contents_map.end() == pc_i || ! pc_i->second)
+ throw InternalError(PALUDIS_HERE, "has_package_named(" + stringify(q) + ") but got package_contents_map end or zero pointer");
PackageContents & pc(*pc_i->second);
l.acquire_then_release_old(pc.mutex);
More information about the paludis-commits
mailing list