diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-09-14 11:31:19 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-09-16 14:47:09 +0200 |
commit | 4659671f3c696a27139a4df98dc0894548169ace (patch) | |
tree | 41a527d537f1996597b48983068b3798e0bb7966 | |
parent | e9c3426fbe33dbe3f267959b1e6c8ef3aff5bb5e (diff) |
shave 10% off load time of large docx file
Change-Id: I5aacde7b6886bf47e79d055639e1b911da3be168
Reviewed-on: https://gerrit.libreoffice.org/78900
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 096b91ee15e2686d4eb7118fdb9688ba9dbc44b2)
Reviewed-on: https://gerrit.libreoffice.org/78901
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r-- | include/sax/fastattribs.hxx | 5 | ||||
-rw-r--r-- | sax/source/fastparser/fastparser.cxx | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/sax/fastattribs.hxx b/include/sax/fastattribs.hxx index f8005a65a27a..a45dcba001e3 100644 --- a/include/sax/fastattribs.hxx +++ b/include/sax/fastattribs.hxx @@ -78,6 +78,11 @@ public: virtual ~FastAttributeList() override; void clear(); + void reserve( sal_Int32 nNumTokens ) + { + maAttributeValues.reserve(nNumTokens+1); + maAttributeTokens.reserve(nNumTokens); + } void add( sal_Int32 nToken, const sal_Char* pValue ); void add( sal_Int32 nToken, const sal_Char* pValue, size_t nValueLength ); void add( sal_Int32 nToken, const OString& rValue ); diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx index c910ad83381f..2cb5d1ee6eb6 100644 --- a/sax/source/fastparser/fastparser.cxx +++ b/sax/source/fastparser/fastparser.cxx @@ -1183,6 +1183,7 @@ void FastSaxParserImpl::callbackStartElement(const xmlChar *localName , const xm if ( rEntity.mxTokenHandler.is() ) { // #158414# second: fill attribute list with other attributes + rEvent.mxAttributes->reserve( numAttributes ); for (int i = 0; i < numAttributes * 5; i += 5) { // attributes[] is ( localname / prefix / nsURI / valueBegin / valueEnd ) |