From: JINMEI Tatuya Date: Wed, 26 Sep 2012 16:40:59 +0000 (-0700) Subject: [2218] a small optimization: avoid using getOrigin(), which is expensive. X-Git-Tag: trac2351_base~37^2~1^2~3^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4735853efc9554536e607a3431631348ea2d0c49;p=thirdparty%2Fkea.git [2218] a small optimization: avoid using getOrigin(), which is expensive. creating labelsequence for the origin node should be normally faster. also do some constify. --- diff --git a/src/lib/datasrc/memory/zone_finder.cc b/src/lib/datasrc/memory/zone_finder.cc index cbe79da2a7..08b740c740 100644 --- a/src/lib/datasrc/memory/zone_finder.cc +++ b/src/lib/datasrc/memory/zone_finder.cc @@ -617,8 +617,9 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) { LOG_DEBUG(logger, DBG_TRACE_BASIC, DATASRC_MEM_FINDNSEC3).arg(name). arg(recursive ? "recursive" : "non-recursive"); - Name origin(getOrigin()); - const LabelSequence origin_ls(origin); + uint8_t labels_buf[LabelSequence::MAX_SERIALIZED_LENGTH]; + const LabelSequence origin_ls(zone_data_.getOriginNode()-> + getAbsoluteLabels(labels_buf)); const LabelSequence name_ls(name); if (!zone_data_.isNSEC3Signed()) { @@ -648,7 +649,7 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) { } // Convenient shortcuts - const unsigned int olabels = origin.getLabelCount(); + const unsigned int olabels = origin_ls.getLabelCount(); const unsigned int qlabels = name.getLabelCount(); // placeholder of the next closer proof const ZoneNode* covering_node(NULL); @@ -656,7 +657,7 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) { // Now we'll first look up the origin node and initialize orig_chain // with it. ZoneChain orig_chain; - ZoneNode* node(NULL); + const ZoneNode* node(NULL); ZoneTree::Result result = tree.find(origin_ls, &node, orig_chain, NULL, NULL); if (result != ZoneTree::EXACTMATCH) {