xmloff/source/core/xmlexp.cxx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
New commits: commit 87a8b798573582b32124c786a8a7505b7cf1ca73 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Tue Oct 8 14:44:27 2024 +0200 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Tue Oct 8 22:32:46 2024 +0200 improve ODF sheet saving performance GetODFSaneDefaultVersion() is surprisingly hot, mostly because it is called from every ScXMLExport::WriteCell call, so cache it Change-Id: Ibc54c007f4979315487badc23889eb264b11d4ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174693 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Michael Meeks <michael.me...@collabora.com> diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index 3f1d0667b3c4..3fdf2e6ade50 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -248,7 +248,7 @@ public: uno::Reference< embed::XStorage > mxTargetStorage; - std::optional<SvtSaveOptions::ODFSaneDefaultVersion> m_oOverrideODFVersion; + std::optional<SvtSaveOptions::ODFSaneDefaultVersion> m_oODFVersion; /// name of stream in package, e.g., "content.xml" OUString mStreamName; @@ -421,12 +421,12 @@ void SvXMLExport::DetermineModelType_() { case SvtSaveOptions::ODFSVER_013_EXTENDED: SAL_INFO("xmloff.core", "tdf#138209 force form export to ODF 1.2"); - mpImpl->m_oOverrideODFVersion = SvtSaveOptions::ODFSVER_012_EXTENDED; + mpImpl->m_oODFVersion = SvtSaveOptions::ODFSVER_012_EXTENDED; maUnitConv.overrideSaneDefaultVersion(SvtSaveOptions::ODFSVER_012_EXTENDED); break; case SvtSaveOptions::ODFSVER_013: SAL_INFO("xmloff.core", "tdf#138209 force form export to ODF 1.2"); - mpImpl->m_oOverrideODFVersion = SvtSaveOptions::ODFSVER_012; + mpImpl->m_oODFVersion = SvtSaveOptions::ODFSVER_012; maUnitConv.overrideSaneDefaultVersion(SvtSaveOptions::ODFSVER_012); break; default: @@ -2325,11 +2325,10 @@ uno::Reference< embed::XStorage > const & SvXMLExport::GetTargetStorage() const SvtSaveOptions::ODFSaneDefaultVersion SvXMLExport::getSaneDefaultVersion() const { - if (mpImpl->m_oOverrideODFVersion) - { - return *mpImpl->m_oOverrideODFVersion; - } - return GetODFSaneDefaultVersion(); + // cache this because it is surprising expensive when used extensively from ScXMLExport::WriteCell + if (!mpImpl->m_oODFVersion) + mpImpl->m_oODFVersion = GetODFSaneDefaultVersion(); + return *mpImpl->m_oODFVersion; } void