[Libreoffice-commits] .: 2 commits - sc/inc sc/source

Kohei Yoshida kohei at kemper.freedesktop.org
Thu Mar 15 18:53:52 PDT 2012


 sc/inc/dpcache.hxx              |   16 ++++------------
 sc/source/core/data/dpcache.cxx |   31 ++-----------------------------
 2 files changed, 6 insertions(+), 41 deletions(-)

New commits:
commit 0c1a63b1fbbd9540a724f6918675a5559b19c156
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Thu Mar 15 20:30:52 2012 -0400

    No need to trim capacity any more; it's allocated to the exact size.

diff --git a/sc/source/core/data/dpcache.cxx b/sc/source/core/data/dpcache.cxx
index 4c93501..928e511 100644
--- a/sc/source/core/data/dpcache.cxx
+++ b/sc/source/core/data/dpcache.cxx
@@ -756,12 +756,6 @@ public:
 void ScDPCache::PostInit()
 {
     maEmptyRows.build_tree();
-    FieldsType::iterator it = maFields.begin(), itEnd = maFields.end();
-    for (; it != itEnd; ++it)
-    {
-        // Trim excess capacity.
-        ItemsType(it->maItems).swap(it->maItems);
-    }
 }
 
 void ScDPCache::Clear()
commit 9e19cf80c080929c914dc0bfa069f22c8526c3b0
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Thu Mar 15 20:23:10 2012 -0400

    We don't need these extra order index array; items are already sorted.
    
    This shaves off extra 5MB of memory with my test document.

diff --git a/sc/inc/dpcache.hxx b/sc/inc/dpcache.hxx
index 6566979..1e26688 100644
--- a/sc/inc/dpcache.hxx
+++ b/sc/inc/dpcache.hxx
@@ -80,7 +80,10 @@ public:
          */
         boost::scoped_ptr<GroupItems> mpGroup;
 
-        ItemsType maItems; /// Unique values in the field.
+        /**
+         * Unique values in the field, stored in ascending order.
+         */
+        ItemsType maItems;
 
         /**
          * Original source data represented as indices to the unique value
@@ -89,17 +92,6 @@ public:
          */
         IndexArrayType maData;
 
-        /**
-         * Ascending order of field items.
-         */
-        IndexArrayType maGlobalOrder;
-
-        /**
-         * Ranks of each unique data represented by their index.  It's a
-         * reverse mapping of item index to global order index.
-         */
-        mutable IndexArrayType maIndexOrder;
-
         sal_uLong mnNumFormat;
 
         Field();
diff --git a/sc/source/core/data/dpcache.cxx b/sc/source/core/data/dpcache.cxx
index 08b0d25..4c93501 100644
--- a/sc/source/core/data/dpcache.cxx
+++ b/sc/source/core/data/dpcache.cxx
@@ -376,12 +376,6 @@ void processBuckets(std::vector<Bucket>& aBuckets, ScDPCache::Field& rField)
     size_t nLen = distance(itBeg, itUniqueEnd);
     rField.maItems.reserve(nLen);
     std::for_each(itBeg, itUniqueEnd, PushBackValue(rField.maItems));
-
-    // The items are actually already sorted.  So, just insert a sequence
-    // of integers from 0 and up.
-    rField.maGlobalOrder.reserve(nLen);
-    for (size_t i = 0; i < nLen; ++i)
-        rField.maGlobalOrder.push_back(i);
 }
 
 }
@@ -1120,24 +1114,9 @@ void ScDPCache::ClearGroupFields()
     std::for_each(maFields.begin(), maFields.end(), ClearGroupItems());
 }
 
-SCROW ScDPCache::GetOrder(long nDim, SCROW nIndex) const
+SCROW ScDPCache::GetOrder(long /*nDim*/, SCROW nIndex) const
 {
-    OSL_ENSURE( nDim >=0 && nDim < mnColumnCount, "ScDPTableDataCache::GetOrder : out of bound" );
-
-    const Field& rField = maFields[nDim];
-    if (rField.maIndexOrder.size() !=  rField.maGlobalOrder.size())
-    { //not inited
-        SCROW nRow  = 0;
-        rField.maIndexOrder.resize(rField.maGlobalOrder.size(), 0);
-        for (size_t i = 0, n = rField.maGlobalOrder.size(); i < n; ++i)
-        {
-            nRow = rField.maGlobalOrder[i];
-            rField.maIndexOrder[nRow] = i;
-        }
-    }
-
-    OSL_ENSURE(nIndex >= 0 && sal::static_int_cast<sal_uInt32>(nIndex) < rField.maIndexOrder.size() , "ScDPTableDataCache::GetOrder");
-    return rField.maIndexOrder[nIndex];
+    return nIndex;
 }
 
 ScDocument* ScDPCache::GetDoc() const


More information about the Libreoffice-commits mailing list