dbertoni    00/12/20 20:28:53

  Modified:    c/src/XPath MutableNodeRefList.cpp MutableNodeRefList.hpp
  Log:
  Disabled ensureAllocation() for now, since it actually seems to harm 
performance.
  
  Revision  Changes    Path
  1.18      +38 -24    xml-xalan/c/src/XPath/MutableNodeRefList.cpp
  
  Index: MutableNodeRefList.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/MutableNodeRefList.cpp,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- MutableNodeRefList.cpp    2000/12/04 20:46:16     1.17
  +++ MutableNodeRefList.cpp    2000/12/21 04:28:53     1.18
  @@ -165,7 +165,7 @@
   {
        if (n != 0)
        {
  -             ensureAllocation();
  +             // ensureAllocation();
   
                m_nodeList.push_back(n);
        }
  @@ -182,7 +182,7 @@
   
        if (n != 0)
        {
  -             ensureAllocation();
  +             // ensureAllocation();
   
                m_nodeList.insert(m_nodeList.begin() + pos, n);
        }
  @@ -240,16 +240,42 @@
   
   
   
  +inline void
  +MutableNodeRefList::ensureAllocation(NodeListVectorType::size_type   /* 
theSize */)
  +{
  +     // This code is commmented out for now, since it appears to actual hurt
  +     // performance, rather than help.
  +#if 0
  +     const unsigned int      theNodeListSize = m_nodeList.size();
  +
  +     if (theSize > theNodeListSize)
  +     {
  +             const unsigned int      theNewSize = theNodeListSize * 2;
  +
  +             if (theSize > theNewSize)
  +             {
  +                     m_nodeList.reserve(theSize * 2);
  +             }
  +             else
  +             {
  +                     m_nodeList.reserve(theNewSize);
  +             }
  +     }
  +     else
  +     {
  +             m_nodeList.reserve(eDefaultVectorSize);
  +     }
  +#endif
  +}
  +
  +
  +
   void
   MutableNodeRefList::addNodes(const XalanNodeList&    nodelist)
   {
        const unsigned int      theLength = nodelist.getLength();
   
  -     // Reserve the space at the start.  We may end up reserving
  -     // more space than necessary, but it's a small price to
  -     // pay for the increased speed.  We can always shrink by
  -     // swapping if we have way too much space.
  -     ensureAllocation(m_nodeList.size() + theLength);
  +     // ensureAllocation(m_nodeList.size() + theLength);
   
        for (unsigned int i = 0; i < theLength; i++)
        {
  @@ -264,11 +290,7 @@
   {
        const unsigned int      theLength = nodelist.getLength();
   
  -     // Reserve the space at the start.  We may end up reserving
  -     // more space than necessary, but it's a small price to
  -     // pay for the increased speed.  We can always shrink by
  -     // swapping if we have way too much space.
  -     ensureAllocation(m_nodeList.size() + theLength);
  +     // ensureAllocation(m_nodeList.size() + theLength);
   
        for (unsigned int i = 0; i < theLength; i++)
        {
  @@ -285,11 +307,7 @@
   {
        const unsigned int      theLength = nodelist.getLength();
   
  -     // Reserve the space at the start.  We may end up reserving
  -     // more space than necessary, but it's a small price to
  -     // pay for the increased speed.  We can always shrink by
  -     // swapping if we have way too much space.
  -     ensureAllocation(m_nodeList.size() + theLength);
  +     // ensureAllocation(m_nodeList.size() + theLength);
   
        for(unsigned int i = 0; i < theLength; i++)
        {
  @@ -306,11 +324,7 @@
   {
        const unsigned int      theLength = nodelist.getLength();
   
  -     // Reserve the space at the start.  We may end up reserving
  -     // more space than necessary, but it's a small price to
  -     // pay for the increased speed.  We can always shrink by
  -     // swapping if we have way too much space.
  -     ensureAllocation(m_nodeList.size() + theLength);
  +     // ensureAllocation(m_nodeList.size() + theLength);
   
        for(unsigned int i = 0; i < theLength; i++)
        {
  @@ -539,9 +553,9 @@
   {
        if (node != 0)
        {
  -             ensureAllocation();
  -
                const unsigned int      size = m_nodeList.size();
  +
  +             // ensureAllocation(size + 1);
   
                if (size == 0)
                {
  
  
  
  1.13      +5 -0      xml-xalan/c/src/XPath/MutableNodeRefList.hpp
  
  Index: MutableNodeRefList.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/MutableNodeRefList.hpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- MutableNodeRefList.hpp    2000/12/04 20:46:16     1.12
  +++ MutableNodeRefList.hpp    2000/12/21 04:28:53     1.13
  @@ -227,6 +227,11 @@
        clearNulls();
   
        typedef NodeListVectorType::iterator    NodeListIteratorType;
  +
  +private:
  +
  +     void
  +     ensureAllocation(NodeListVectorType::size_type  theSize = 0);
   };
   
   
  
  
  

Reply via email to