diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-04-01 17:03:05 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-04-02 14:14:00 +0200 |
commit | 8917f812cdf28d7ce8907d7a5971749c3ec8815d (patch) | |
tree | 61fafab48a4c667402570bcb0b5b189e9e62669b /sw | |
parent | 71295a9d41a4e0f8b01c74ebf586fc2c15babfd2 (diff) |
tdf#122926 FILEOPEN ODT Slower compared to the past
on my machine, this takes the time from 12.3s to 8.9s
This also includes ba748771cadb294d6af7b7c784c33ccf8632dff1
tdf#122926 FILEOPEN ODT Slower compared to the past (part2)
Further improvement: on my machine, this takes the time from 8.9s to
5.7s
Change-Id: Ibdc7e3c34d1acb0d1f7f784720552fa6c7977fa5
Reviewed-on: https://gerrit.libreoffice.org/70074
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 9634f5ee73e57e8cef75461316d5d45b06ee104f)
Reviewed-on: https://gerrit.libreoffice.org/70091
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/txtnode/ndtxt.cxx | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 02330c6e811e..0a98d0fd4539 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -1396,7 +1396,7 @@ void SwTextNode::Update( bool bAtLeastOneBookmarkMoved = false; bool bAtLeastOneExpandedBookmarkAtInsertionPosition = false; // A text node already knows its marks via its SwIndexes. - std::set<const sw::mark::IMark*> aSeenMarks; + o3tl::sorted_vector<const sw::mark::IMark*> aSeenMarks; const SwIndex* next; for (const SwIndex* pIndex = GetFirstIndex(); pIndex; pIndex = next ) { @@ -1405,9 +1405,8 @@ void SwTextNode::Update( if (!pMark) continue; // Only handle bookmarks once, if they start and end at this node as well. - if (aSeenMarks.find(pMark) != aSeenMarks.end()) + if (!aSeenMarks.insert(pMark).second) continue; - aSeenMarks.insert(pMark); const SwPosition* pEnd = &pMark->GetMarkEnd(); SwIndex & rEndIdx = const_cast<SwIndex&>(pEnd->nContent); if( this == &pEnd->nNode.GetNode() && |