diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-07-17 13:45:52 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-07-17 19:26:39 +0200 |
commit | 946d038c71ae09f3ae403474d66c26c959a18e13 (patch) | |
tree | 89f6b557ca80a62ae36f66c618c01c8cf02c6105 /sw/source/core/doc | |
parent | 868b45039d2d168e1c51d971b0d1e0589d4d11eb (diff) |
tdf#119840 reduce cost of SwPosition::operator<=
by fetching Start/End from SwPaM at the same time
reduces load time by 5%
Change-Id: Ie4a06c667aa0950c04e98e46b30cdc4b97f75ba7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137147
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source/core/doc')
-rw-r--r-- | sw/source/core/doc/DocumentRedlineManager.cxx | 13 | ||||
-rw-r--r-- | sw/source/core/doc/docbm.cxx | 3 |
2 files changed, 6 insertions, 10 deletions
diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index b215170ee36f..9e3d79c14146 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -1349,8 +1349,7 @@ DocumentRedlineManager::AppendRedline(SwRangeRedline* pNewRedl, bool const bCall bDec = false; SwRangeRedline* pRedl = maRedlineTable[ n ]; - SwPosition* pRStt = pRedl->Start(), - * pREnd = pRedl->End(); + auto [pRStt, pREnd] = pRedl->StartEnd(); // #i8518# remove empty redlines while we're at it if( ( *pRStt == *pREnd ) && @@ -2460,10 +2459,9 @@ void DocumentRedlineManager::CompressRedlines() { SwRangeRedline* pPrev = maRedlineTable[ n-1 ], * pCur = maRedlineTable[ n ]; - const SwPosition* pPrevStt = pPrev->Start(), - * pPrevEnd = pPrev->End(); - const SwPosition* pCurStt = pCur->Start(), - * pCurEnd = pCur->End(); + auto [pPrevStt,pPrevEnd] = pPrev->StartEnd(); + auto [pCurStt, pCurEnd] = pCur->StartEnd(); + if( *pPrevEnd == *pCurStt && pPrev->CanCombine( *pCur ) && pPrevStt->nNode.GetNode().StartOfSectionNode() == pCurEnd->nNode.GetNode().StartOfSectionNode() && @@ -2771,8 +2769,7 @@ const SwRangeRedline* DocumentRedlineManager::GetRedline( const SwPosition& rPos { nM = nU + ( nO - nU ) / 2; const SwRangeRedline* pRedl = maRedlineTable[ nM ]; - const SwPosition* pStt = pRedl->Start(); - const SwPosition* pEnd = pRedl->End(); + auto [pStt, pEnd] = pRedl->StartEnd(); if( pEnd == pStt ? *pStt == rPos : ( *pStt <= rPos && rPos < *pEnd ) ) diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx index 41d7a6dfb080..a59bb372487f 100644 --- a/sw/source/core/doc/docbm.cxx +++ b/sw/source/core/doc/docbm.cxx @@ -1919,8 +1919,7 @@ void DelBookmarks( for(SwRangeRedline* pRedl : rTable) { // Is at position? - SwPosition *const pRStt = pRedl->Start(); - SwPosition *const pREnd = pRedl->End(); + auto [pRStt, pREnd] = pRedl->StartEnd(); if( lcl_Greater( *pRStt, rStt, pSttIdx ) && lcl_Lower( *pRStt, rEnd, pEndIdx )) { |