svx/source/unodraw/unoprov.cxx | 31 ++++++++++++---- xmloff/inc/txtfldi.hxx | 2 - xmloff/source/chart/XMLSymbolImageContext.cxx | 2 - xmloff/source/draw/XMLImageMapContext.cxx | 2 - xmloff/source/style/DashStyle.cxx | 2 - xmloff/source/style/GradientStyle.cxx | 2 - xmloff/source/style/HatchStyle.cxx | 4 +- xmloff/source/style/ImageStyle.cxx | 2 - xmloff/source/style/TransGradientStyle.cxx | 2 - xmloff/source/style/XMLBackgroundImageContext.cxx | 28 ++++++-------- xmloff/source/style/xmltabi.cxx | 2 - xmloff/source/text/XMLFootnoteImportContext.cxx | 2 - xmloff/source/text/XMLIndexSourceBaseContext.cxx | 2 - xmloff/source/text/XMLLineNumberingImportContext.cxx | 2 - xmloff/source/text/XMLSectionImportContext.cxx | 2 - xmloff/source/text/XMLSectionSourceDDEImportContext.cxx | 2 - xmloff/source/text/XMLSectionSourceImportContext.cxx | 2 - xmloff/source/text/txtdropi.cxx | 2 - xmloff/source/text/txtfldi.cxx | 4 +- xmloff/source/xforms/xformsapi.cxx | 4 +- 20 files changed, 56 insertions(+), 45 deletions(-)
New commits: commit b1e36f4d264f1d8d8df4558ba0c781ccb93a4244 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Sun Apr 28 12:38:01 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Apr 29 08:31:21 2019 +0200 tdf#63640 FILEOPEN/FILESAVE: particular .odt loads/saves very slow, part4 cache the XMLTokenMap data in static const vars, so we only need to initialise them once Change-Id: Ib63bedc5af5d5927fed189a6b1a86a5db6865c72 Reviewed-on: https://gerrit.libreoffice.org/71466 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 44540e4df500..794ddef20ea5 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -945,8 +945,6 @@ protected: /** import dde field declaration container (<text:dde-connection-decls>) */ class XMLDdeFieldDeclsImportContext : public SvXMLImportContext { - SvXMLTokenMap const aTokenMap; - public: XMLDdeFieldDeclsImportContext(SvXMLImport& rImport, diff --git a/xmloff/source/chart/XMLSymbolImageContext.cxx b/xmloff/source/chart/XMLSymbolImageContext.cxx index 4e9fae4a9df5..5fce5f613f05 100644 --- a/xmloff/source/chart/XMLSymbolImageContext.cxx +++ b/xmloff/source/chart/XMLSymbolImageContext.cxx @@ -61,7 +61,7 @@ XMLSymbolImageContext::~XMLSymbolImageContext() void XMLSymbolImageContext::StartElement( const uno::Reference< xml::sax::XAttributeList >& xAttrList ) { - SvXMLTokenMap aTokenMap( aSymbolImageAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aSymbolImageAttrTokenMap ); OUString aLocalName; sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; diff --git a/xmloff/source/draw/XMLImageMapContext.cxx b/xmloff/source/draw/XMLImageMapContext.cxx index b7386c24f0d7..c7126b055865 100644 --- a/xmloff/source/draw/XMLImageMapContext.cxx +++ b/xmloff/source/draw/XMLImageMapContext.cxx @@ -173,7 +173,7 @@ XMLImageMapObjectContext::XMLImageMapObjectContext( void XMLImageMapObjectContext::StartElement( const Reference<XAttributeList >& xAttrList ) { - SvXMLTokenMap aMap(aImageMapObjectTokenMap); + static const SvXMLTokenMap aMap(aImageMapObjectTokenMap); sal_Int16 nLength = xAttrList->getLength(); for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++) diff --git a/xmloff/source/style/DashStyle.cxx b/xmloff/source/style/DashStyle.cxx index d940a143dd65..353591ba963c 100644 --- a/xmloff/source/style/DashStyle.cxx +++ b/xmloff/source/style/DashStyle.cxx @@ -104,7 +104,7 @@ void XMLDashStyleImport::importXML( SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap(); SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter(); - SvXMLTokenMap aTokenMap( aDashStyleAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aDashStyleAttrTokenMap ); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; for( sal_Int16 i=0; i < nAttrCount; i++ ) diff --git a/xmloff/source/style/GradientStyle.cxx b/xmloff/source/style/GradientStyle.cxx index 8feb95d56c8f..ed3d5dad1323 100644 --- a/xmloff/source/style/GradientStyle.cxx +++ b/xmloff/source/style/GradientStyle.cxx @@ -111,7 +111,7 @@ void XMLGradientStyleImport::importXML( aGradient.Angle = 0; aGradient.Border = 0; - SvXMLTokenMap aTokenMap( aGradientAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aGradientAttrTokenMap ); SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap(); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; diff --git a/xmloff/source/style/HatchStyle.cxx b/xmloff/source/style/HatchStyle.cxx index d394e26d01b1..c23ff4b719c8 100644 --- a/xmloff/source/style/HatchStyle.cxx +++ b/xmloff/source/style/HatchStyle.cxx @@ -95,8 +95,8 @@ void XMLHatchStyleImport::importXML( aHatch.Distance = 0; aHatch.Angle = 0; - SvXMLTokenMap aTokenMap( aHatchAttrTokenMap ); - SvXMLNamespaceMap rNamespaceMap = rImport.GetNamespaceMap(); + static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap ); + const SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap(); SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter(); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; diff --git a/xmloff/source/style/ImageStyle.cxx b/xmloff/source/style/ImageStyle.cxx index c70a23b4dbe9..04427771311a 100644 --- a/xmloff/source/style/ImageStyle.cxx +++ b/xmloff/source/style/ImageStyle.cxx @@ -106,7 +106,7 @@ bool XMLImageStyle::importXML(uno::Reference<xml::sax::XAttributeList> const & x OUString aDisplayName; uno::Reference<graphic::XGraphic> xGraphic; - SvXMLTokenMap aTokenMap( aHatchAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap ); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; for( sal_Int16 i=0; i < nAttrCount; i++ ) diff --git a/xmloff/source/style/TransGradientStyle.cxx b/xmloff/source/style/TransGradientStyle.cxx index 3de8ce2a4eee..52edc261c4cf 100644 --- a/xmloff/source/style/TransGradientStyle.cxx +++ b/xmloff/source/style/TransGradientStyle.cxx @@ -106,7 +106,7 @@ void XMLTransGradientStyleImport::importXML( XML_TOKEN_MAP_END }; - SvXMLTokenMap aTokenMap( aTrGradientAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aTrGradientAttrTokenMap ); SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap(); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; diff --git a/xmloff/source/style/XMLBackgroundImageContext.cxx b/xmloff/source/style/XMLBackgroundImageContext.cxx index b1ad4d2c0b82..6bdafccff70e 100644 --- a/xmloff/source/style/XMLBackgroundImageContext.cxx +++ b/xmloff/source/style/XMLBackgroundImageContext.cxx @@ -54,22 +54,18 @@ enum SvXMLTokenMapAttrs XML_TOK_BGIMG_FILTER, XML_TOK_BGIMG_OPACITY }; -static const SvXMLTokenMapEntry* lcl_getBGImgAttributesAttrTokenMap() +static const SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] = { - static const SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] = - { - { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_BGIMG_HREF }, - { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_BGIMG_TYPE }, - { XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_BGIMG_ACTUATE }, - { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_BGIMG_SHOW }, - { XML_NAMESPACE_STYLE, XML_POSITION, XML_TOK_BGIMG_POSITION }, - { XML_NAMESPACE_STYLE, XML_REPEAT, XML_TOK_BGIMG_REPEAT }, - { XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TOK_BGIMG_FILTER }, - { XML_NAMESPACE_DRAW, XML_OPACITY, XML_TOK_BGIMG_OPACITY }, - XML_TOKEN_MAP_END - }; - return aBGImgAttributesAttrTokenMap; -} + { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_BGIMG_HREF }, + { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_BGIMG_TYPE }, + { XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_BGIMG_ACTUATE }, + { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_BGIMG_SHOW }, + { XML_NAMESPACE_STYLE, XML_POSITION, XML_TOK_BGIMG_POSITION }, + { XML_NAMESPACE_STYLE, XML_REPEAT, XML_TOK_BGIMG_REPEAT }, + { XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TOK_BGIMG_FILTER }, + { XML_NAMESPACE_DRAW, XML_OPACITY, XML_TOK_BGIMG_OPACITY }, + XML_TOKEN_MAP_END +}; static const SvXMLEnumMapEntry<GraphicLocation> psXML_BrushHoriPos[] = @@ -170,7 +166,7 @@ static void lcl_xmlbic_MergeVertPos( GraphicLocation& ePos, void XMLBackgroundImageContext::ProcessAttrs( const Reference< xml::sax::XAttributeList >& xAttrList ) { - SvXMLTokenMap aTokenMap( lcl_getBGImgAttributesAttrTokenMap() ); + static const SvXMLTokenMap aTokenMap( aBGImgAttributesAttrTokenMap ); ePos = GraphicLocation_NONE; diff --git a/xmloff/source/style/xmltabi.cxx b/xmloff/source/style/xmltabi.cxx index 5dbfcf1087aa..f0653e3e8ec0 100644 --- a/xmloff/source/style/xmltabi.cxx +++ b/xmloff/source/style/xmltabi.cxx @@ -84,7 +84,7 @@ SvxXMLTabStopContext_Impl::SvxXMLTabStopContext_Impl( aTabStop.FillChar = ' '; sal_Unicode cTextFillChar = 0; - SvXMLTokenMap aTokenMap( aTabsAttributesAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aTabsAttributesAttrTokenMap ); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; for( sal_Int16 i=0; i < nAttrCount; i++ ) diff --git a/xmloff/source/text/XMLFootnoteImportContext.cxx b/xmloff/source/text/XMLFootnoteImportContext.cxx index dd4cfdd6f499..6cf42cd96a83 100644 --- a/xmloff/source/text/XMLFootnoteImportContext.cxx +++ b/xmloff/source/text/XMLFootnoteImportContext.cxx @@ -175,7 +175,7 @@ SvXMLImportContextRef XMLFootnoteImportContext::CreateChildContext( { SvXMLImportContextRef xContext; - SvXMLTokenMap aTokenMap(aFootnoteChildTokenMap); + static const SvXMLTokenMap aTokenMap(aFootnoteChildTokenMap); switch(aTokenMap.Get(p_nPrefix, rLocalName)) { diff --git a/xmloff/source/text/XMLIndexSourceBaseContext.cxx b/xmloff/source/text/XMLIndexSourceBaseContext.cxx index b8e2b0b4e7b8..058dc009bd8b 100644 --- a/xmloff/source/text/XMLIndexSourceBaseContext.cxx +++ b/xmloff/source/text/XMLIndexSourceBaseContext.cxx @@ -162,7 +162,7 @@ XMLIndexSourceBaseContext::~XMLIndexSourceBaseContext() void XMLIndexSourceBaseContext::StartElement( const Reference<XAttributeList> & xAttrList) { - SvXMLTokenMap aTokenMap(aIndexSourceTokenMap); + static const SvXMLTokenMap aTokenMap(aIndexSourceTokenMap); // process attributes sal_Int16 nLength = xAttrList->getLength(); diff --git a/xmloff/source/text/XMLLineNumberingImportContext.cxx b/xmloff/source/text/XMLLineNumberingImportContext.cxx index dd3aa73951d4..57036d09054c 100644 --- a/xmloff/source/text/XMLLineNumberingImportContext.cxx +++ b/xmloff/source/text/XMLLineNumberingImportContext.cxx @@ -108,7 +108,7 @@ void XMLLineNumberingImportContext::StartElement( XML_TOKEN_MAP_END }; - SvXMLTokenMap aTokenMap(aLineNumberingTokenMap); + static const SvXMLTokenMap aTokenMap(aLineNumberingTokenMap); // process attributes sal_Int16 nLength = xAttrList->getLength(); diff --git a/xmloff/source/text/XMLSectionImportContext.cxx b/xmloff/source/text/XMLSectionImportContext.cxx index a7e971e4dc14..42e93478dd5d 100644 --- a/xmloff/source/text/XMLSectionImportContext.cxx +++ b/xmloff/source/text/XMLSectionImportContext.cxx @@ -224,7 +224,7 @@ void XMLSectionImportContext::StartElement( void XMLSectionImportContext::ProcessAttributes( const Reference<XAttributeList> & xAttrList ) { - SvXMLTokenMap aTokenMap(aSectionTokenMap); + static const SvXMLTokenMap aTokenMap(aSectionTokenMap); sal_Int16 nLength = xAttrList->getLength(); for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++) diff --git a/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx b/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx index 7c21b0749d0e..814135d947f2 100644 --- a/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx +++ b/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx @@ -78,7 +78,7 @@ static const SvXMLTokenMapEntry aSectionSourceDDETokenMap[] = void XMLSectionSourceDDEImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { - SvXMLTokenMap aTokenMap(aSectionSourceDDETokenMap); + static const SvXMLTokenMap aTokenMap(aSectionSourceDDETokenMap); OUString sApplication; OUString sTopic; OUString sItem; diff --git a/xmloff/source/text/XMLSectionSourceImportContext.cxx b/xmloff/source/text/XMLSectionSourceImportContext.cxx index 7a3048bb846f..e938ce871593 100644 --- a/xmloff/source/text/XMLSectionSourceImportContext.cxx +++ b/xmloff/source/text/XMLSectionSourceImportContext.cxx @@ -73,7 +73,7 @@ static const SvXMLTokenMapEntry aSectionSourceTokenMap[] = void XMLSectionSourceImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { - SvXMLTokenMap aTokenMap(aSectionSourceTokenMap); + static const SvXMLTokenMap aTokenMap(aSectionSourceTokenMap); OUString sURL; OUString sFilterName; OUString sSectionName; diff --git a/xmloff/source/text/txtdropi.cxx b/xmloff/source/text/txtdropi.cxx index 25b247880b14..8e7dc0e2100b 100644 --- a/xmloff/source/text/txtdropi.cxx +++ b/xmloff/source/text/txtdropi.cxx @@ -58,7 +58,7 @@ static const SvXMLTokenMapEntry aDropAttrTokenMap[] = void XMLTextDropCapImportContext::ProcessAttrs( const Reference< xml::sax::XAttributeList >& xAttrList ) { - SvXMLTokenMap aTokenMap( aDropAttrTokenMap ); + static const SvXMLTokenMap aTokenMap( aDropAttrTokenMap ); DropCapFormat aFormat; bool bWholeWord = false; diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index f37f11561002..c1b1093a8ad3 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2694,8 +2694,7 @@ static const SvXMLTokenMapEntry aDdeDeclAttrTokenMap[] = XMLDdeFieldDeclsImportContext::XMLDdeFieldDeclsImportContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& sLocalName) : - SvXMLImportContext(rImport, nPrfx, sLocalName), - aTokenMap(aDdeDeclAttrTokenMap) + SvXMLImportContext(rImport, nPrfx, sLocalName) { } @@ -2707,6 +2706,7 @@ SvXMLImportContextRef XMLDdeFieldDeclsImportContext::CreateChildContext( if ( (XML_NAMESPACE_TEXT == nPrefix) && (IsXMLToken(rLocalName, XML_DDE_CONNECTION_DECL)) ) { + static const SvXMLTokenMap aTokenMap(aDdeDeclAttrTokenMap); return new XMLDdeFieldDeclImportContext(GetImport(), nPrefix, rLocalName, aTokenMap); } diff --git a/xmloff/source/xforms/xformsapi.cxx b/xmloff/source/xforms/xformsapi.cxx index 7a5f9aacc0d9..f52aac6272b6 100644 --- a/xmloff/source/xforms/xformsapi.cxx +++ b/xmloff/source/xforms/xformsapi.cxx @@ -195,7 +195,7 @@ sal_uInt16 xforms_getTypeClass( // translate name into token for local name OUString sLocalName; sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName(rXMLName, &sLocalName); - SvXMLTokenMap aMap( aTypes ); + static const SvXMLTokenMap aMap( aTypes ); sal_uInt16 nToken = aMap.Get( nPrefix, sLocalName ); sal_uInt16 nTypeClass = css::xsd::DataTypeClass::STRING; @@ -265,7 +265,7 @@ OUString xforms_getTypeName( { OUString sLocalName; sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName(rXMLName, &sLocalName); - SvXMLTokenMap aMap( aTypes ); + static const SvXMLTokenMap aMap( aTypes ); sal_uInt16 nToken = aMap.Get( nPrefix, sLocalName ); return ( nToken == XML_TOK_UNKNOWN ) ? rXMLName commit 560a0f2fbe452d25fe78d6756919c11ec67f630f Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Sat Apr 27 09:45:39 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Apr 29 08:31:10 2019 +0200 tdf#63640 FILEOPEN/FILESAVE: particular .odt loads/saves very slow, part3 Reduce time spent constructing strings from char arrays just to do a comparison Change-Id: I7af99747530d91d57e1a5b789ca9989a616428fc Reviewed-on: https://gerrit.libreoffice.org/71464 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx index 0d31e6e04231..0bb5d1363d45 100644 --- a/svx/source/unodraw/unoprov.cxx +++ b/svx/source/unodraw/unoprov.cxx @@ -1542,16 +1542,33 @@ static bool SvxUnoConvertResourceString(const char **pSourceResIds, const char** for (int i = 0; i < nCount; ++i) { - const OUString aCompare = bToApi ? SvxResId(pSourceResIds[i]) : OUString::createFromAscii(pSourceResIds[i]); - if( aShortString == aCompare ) + if (bToApi) { - rString = rString.replaceAt( 0, aShortString.getLength(), bToApi ? OUString::createFromAscii(pDestResIds[i]) : SvxResId(pDestResIds[i]) ); - return true; + const OUString & aCompare = SvxResId(pSourceResIds[i]); + if( aShortString == aCompare ) + { + rString = rString.replaceAt( 0, aShortString.getLength(), OUString::createFromAscii(pDestResIds[i]) ); + return true; + } + else if( rString == aCompare ) + { + rString = OUString::createFromAscii(pDestResIds[i]); + return true; + } } - else if( rString == aCompare ) + else { - rString = bToApi ? OUString::createFromAscii(pDestResIds[i]) : SvxResId(pDestResIds[i]); - return true; + auto pCompare = pSourceResIds[i]; + if( aShortString.equalsAscii(pCompare) ) + { + rString = rString.replaceAt( 0, aShortString.getLength(), SvxResId(pDestResIds[i]) ); + return true; + } + else if( rString.equalsAscii(pCompare) ) + { + rString = SvxResId(pDestResIds[i]); + return true; + } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits