xmloff/source/core/xmlexp.cxx |   15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

New commits:
commit 94738e6def221e722ae726af1b8abb8840b59a39
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Oct 8 14:44:27 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Oct 9 08:26:41 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/+/174671
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx
index d7defe3052be..4a3f9d44eb36 100644
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@ -247,7 +247,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;
@@ -420,12 +420,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:
@@ -2326,11 +2326,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

Reply via email to