diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2020-04-19 18:35:20 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-04-22 11:50:50 +0200 |
commit | c6ae3a0610700a730d549c25dbff1748f02b8e3e (patch) | |
tree | 93d2c178cd91c7a91731f56f254ae12ff8c17516 | |
parent | acd8105a825ee4d0efa25ddf512dbb373bd7b8f3 (diff) |
tdf#131951 related, improve perf
similar to
commit 9429dacc7ff93f99dd84532357020669df33a0c5
tdf#131951: automatically increase buffer size
in a few places, let the OUStringBuffer handle large tokens,
it has faster handling than repeatedly appending to an OUString
Change-Id: I609b84b36e817fbcd6d366c53cd2e8b865216712
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92503
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92648
-rw-r--r-- | svtools/source/svhtml/parhtml.cxx | 14 | ||||
-rw-r--r-- | svtools/source/svrtf/parrtf.cxx | 16 |
2 files changed, 4 insertions, 26 deletions
diff --git a/svtools/source/svhtml/parhtml.cxx b/svtools/source/svhtml/parhtml.cxx index 3f50197e85b7..67f5a87862ad 100644 --- a/svtools/source/svhtml/parhtml.cxx +++ b/svtools/source/svhtml/parhtml.cxx @@ -925,12 +925,6 @@ HtmlTokenId HTMLParser::GetNextRawToken() while( '-' == nNextCh && IsParserWorking() ) { bTwoMinus = true; - - if( MAX_LEN == sTmpBuffer.getLength() ) - { - aToken += sTmpBuffer; - sTmpBuffer.setLength(0); - } sTmpBuffer.appendUtf32( nNextCh ); nNextCh = GetNextChar(); } @@ -983,8 +977,7 @@ HtmlTokenId HTMLParser::GetNextRawToken() break; } - if( (!bContinue && !sTmpBuffer.isEmpty()) || - MAX_LEN == sTmpBuffer.getLength() ) + if( !bContinue && !sTmpBuffer.isEmpty() ) { aToken += sTmpBuffer; sTmpBuffer.setLength(0); @@ -1063,11 +1056,6 @@ HtmlTokenId HTMLParser::GetNextToken_() OUStringBuffer sTmpBuffer; do { sTmpBuffer.appendUtf32( nNextCh ); - if( MAX_LEN == sTmpBuffer.getLength() ) - { - aToken += sTmpBuffer; - sTmpBuffer.setLength(0); - } nNextCh = GetNextChar(); } while( '>' != nNextCh && '/' != nNextCh && !rtl::isAsciiWhiteSpace( nNextCh ) && IsParserWorking() && !rInput.eof() ); diff --git a/svtools/source/svrtf/parrtf.cxx b/svtools/source/svrtf/parrtf.cxx index 349ca2e37bb6..a7e3f64f226e 100644 --- a/svtools/source/svrtf/parrtf.cxx +++ b/svtools/source/svrtf/parrtf.cxx @@ -98,22 +98,12 @@ int SvRTFParser::GetNextToken_() { aToken = "\\"; { - OUStringBuffer aStrBuffer; - aStrBuffer.setLength( MAX_TOKEN_LEN ); - sal_Int32 nStrLen = 0; + OUStringBuffer aStrBuffer( MAX_TOKEN_LEN ); do { - aStrBuffer[nStrLen++] = nNextCh; - if( MAX_TOKEN_LEN == nStrLen ) - { - aToken += aStrBuffer; - nStrLen = 0; - } + aStrBuffer.appendUtf32(nNextCh); nNextCh = GetNextChar(); } while( RTF_ISALPHA( nNextCh ) ); - if( nStrLen ) - { - aToken += aStrBuffer; - } + aToken += aStrBuffer; } // minus before numeric parameters |