From 51dbdfdf1e29deba1119a68e542a740916fd1c44 Mon Sep 17 00:00:00 2001 From: Tinny Ng <tng@apache.org> Date: Wed, 7 Nov 2001 21:10:46 +0000 Subject: [PATCH] Performance: move getRawName() to outer loop so that it is called only once per outer loop. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173204 13f79535-47bb-0310-9956-ffa450edef68 --- src/validators/common/DFAContentModel.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/validators/common/DFAContentModel.cpp b/src/validators/common/DFAContentModel.cpp index ffa84e8c2..63060b039 100644 --- a/src/validators/common/DFAContentModel.cpp +++ b/src/validators/common/DFAContentModel.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.26 2001/11/07 21:10:46 tng + * Performance: move getRawName() to outer loop so that it is called only once per outer loop. + * * Revision 1.25 2001/10/04 15:08:55 knoaman * Add support for circular import. * @@ -290,6 +293,9 @@ DFAContentModel::validateContent( QName** const children { // Get the current element index out const QName* curElem = children[childIndex]; + const XMLCh* curElemRawName = 0; + if (fDTD) + curElemRawName = curElem->getRawName(); // If this is text in a Schema mixed content model, skip it. if ( fIsMixed && @@ -302,7 +308,7 @@ DFAContentModel::validateContent( QName** const children { const QName* inElem = fElemMap[elemIndex]; if (fDTD) { - if (!XMLString::compareString(inElem->getRawName(), curElem->getRawName())) { + if (!XMLString::compareString(inElem->getRawName(), curElemRawName)) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; @@ -583,6 +589,9 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode) // Get the current leaf's element index const QName* element = fLeafList[outIndex]->getElement(); + const XMLCh* elementRawName = 0; + if (fDTD && element) + elementRawName = element->getRawName(); // See if the current leaf node's element index is in the list unsigned int inIndex = 0; @@ -591,7 +600,7 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode) { const QName* inElem = fElemMap[inIndex]; if (fDTD) { - if (!XMLString::compareString(inElem->getRawName(), element->getRawName())) { + if (!XMLString::compareString(inElem->getRawName(), elementRawName)) { break; } } @@ -630,13 +639,17 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode) for (unsigned int elemIndex = 0; elemIndex < fElemMapSize; elemIndex++) { + const QName* element = fElemMap[elemIndex]; + const XMLCh* elementRawName = 0; + if (fDTD && element) + elementRawName = element->getRawName(); + for (unsigned int leafIndex = 0; leafIndex < fLeafCount; leafIndex++) { const QName* leaf = fLeafList[leafIndex]->getElement(); const int leafType = fLeafListType[leafIndex]; - const QName* element = fElemMap[elemIndex]; if (fDTD) { - if (!XMLString::compareString(leaf->getRawName(), element->getRawName())) { + if (!XMLString::compareString(leaf->getRawName(), elementRawName)) { fLeafSorter[fSortCount++] = leafIndex; } } -- GitLab