tdf#79049 speed up OOXML workbook load (3)
Exit this loop early if we aren't going to make progress anyhow. This takes the load time from 40s to 34s for me. Change-Id: I31887442cde6e3fc05f1fce10bb3dde9c2b88bf2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114942 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
committed by
Noel Grandin
parent
deac5c8473
commit
61386aa03c
@@ -1959,17 +1959,21 @@ bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData ) const
|
||||
Search( nLastData, nPos );
|
||||
while ( nPos < mvData.size() )
|
||||
{
|
||||
SCROW nAttrStartRow = ( nPos > 0 ) ? ( mvData[nPos-1].nEndRow + 1 ) : 0;
|
||||
if ( nAttrStartRow <= nLastData )
|
||||
nAttrStartRow = nLastData + 1;
|
||||
// find range of visually equal formats
|
||||
SCSIZE nEndPos = nPos;
|
||||
while ( nEndPos < mvData.size()-1 &&
|
||||
mvData[nEndPos].pPattern->IsVisibleEqual( *mvData[nEndPos+1].pPattern))
|
||||
{
|
||||
if ( (mvData[nEndPos].nEndRow + 1 - nAttrStartRow) >= SC_VISATTR_STOP )
|
||||
return false; // ignore this range and below
|
||||
++nEndPos;
|
||||
SCROW nAttrStartRow = ( nPos > 0 ) ? ( mvData[nPos-1].nEndRow + 1 ) : 0;
|
||||
if ( nAttrStartRow <= nLastData )
|
||||
nAttrStartRow = nLastData + 1;
|
||||
}
|
||||
SCROW nAttrSize = mvData[nEndPos].nEndRow + 1 - nAttrStartRow;
|
||||
if ( nAttrSize >= SC_VISATTR_STOP )
|
||||
break; // while, ignore this range and below
|
||||
return false; // ignore this range and below
|
||||
else if ( mvData[nEndPos].pPattern->IsVisible() )
|
||||
{
|
||||
rLastRow = mvData[nEndPos].nEndRow;
|
||||
|
||||
Reference in New Issue
Block a user