lotuswordpro/source/filter/lwptablelayout.cxx |   17 +++++------------
 lotuswordpro/source/filter/lwptablelayout.hxx |    4 +++-
 2 files changed, 8 insertions(+), 13 deletions(-)

New commits:
commit 7ca1632a402bea7568d8441524d3f6092695f3c5
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Oct 9 20:51:17 2020 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Sat Oct 10 20:01:38 2020 +0200

    ofz#23505 31 seconds -> 12 seconds
    
    Change-Id: Ib26f03bb308e4b96a0647ca3a81288b6cce5a767
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104133
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/lotuswordpro/source/filter/lwptablelayout.cxx 
b/lotuswordpro/source/filter/lwptablelayout.cxx
index 846e757ad3e3..5ea2d42db9a4 100644
--- a/lotuswordpro/source/filter/lwptablelayout.cxx
+++ b/lotuswordpro/source/filter/lwptablelayout.cxx
@@ -1408,15 +1408,10 @@ void 
LwpTableLayout::ConvertDefaultRow(rtl::Reference<XFTable> const & pXFTable,
  * @param   nRow - row id
  * @param   nCol - column id
  */
-void LwpTableLayout::SetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol,XFCell* 
pXFCell)
+void LwpTableLayout::SetCellsMap(sal_uInt16 nRow, sal_uInt8 nCol, XFCell* 
pXFCell)
 {
-    std::pair<std::pair<sal_uInt16,sal_uInt8>,XFCell*> cell;
-    std::pair<sal_uInt16,sal_uInt8> pos;
-    pos.first = nRow;
-    pos.second = nCol;
-    cell.first = pos;
-    cell.second = pXFCell;
-    m_CellsMap.insert(cell);
+    // combine the 16bit nRow and 8bit nCol into a single 32bit number
+    m_CellsMap.insert(std::make_pair((nRow << 8) | nCol, pXFCell));
 }
 
 /**
@@ -1425,11 +1420,9 @@ void LwpTableLayout::SetCellsMap(sal_uInt16 
nRow,sal_uInt8 nCol,XFCell* pXFCell)
  * @param   nCol  - column id
  * @return  pXFCell
  */
-XFCell* LwpTableLayout::GetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol)
+XFCell* LwpTableLayout::GetCellsMap(sal_uInt16 nRow, sal_uInt8 nCol)
 {
-    std::pair<sal_uInt16,sal_uInt8> pos;
-    pos.first = nRow;
-    pos.second = nCol;
+    RowCol pos = (nRow << 8) | nCol;
     auto iter =  m_CellsMap.find(pos);
     if (iter == m_CellsMap.end())
         return nullptr;
diff --git a/lotuswordpro/source/filter/lwptablelayout.hxx 
b/lotuswordpro/source/filter/lwptablelayout.hxx
index 9eebb2b391c1..21ab84ec1c67 100644
--- a/lotuswordpro/source/filter/lwptablelayout.hxx
+++ b/lotuswordpro/source/filter/lwptablelayout.hxx
@@ -67,6 +67,7 @@
 #include <vector>
 #include <map>
 #include <memory>
+#include <unordered_map>
 
 class XFTableStyle;
 class XFTable;
@@ -164,7 +165,8 @@ private:
     void SplitConflictCells();
     rtl::Reference<XFTable> m_pXFTable;
     bool m_bConverted;
-    std::map<std::pair<sal_uInt16,sal_uInt8>,XFCell*> m_CellsMap;
+    typedef sal_Int32 RowCol;
+    std::unordered_map<RowCol, XFCell*> m_CellsMap;
 
     void PutCellVals(LwpFoundry* pFoundry, LwpObjectID aTableID);
 };
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to