comphelper/source/property/propertysetinfo.cxx |   10 +++++-----
 include/comphelper/propertysetinfo.hxx         |    3 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)

New commits:
commit b03aa654eb2e2980f3efc0347b1435414d8f1d09
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed May 11 11:00:42 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed May 11 15:16:17 2022 +0200

    cache the Sequence we return in comphelper::PropertySetInfo::getProperties
    
    Change-Id: If4e6e43be5d7380665e56bf95c446ff14e6a7213
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134155
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/comphelper/source/property/propertysetinfo.cxx 
b/comphelper/source/property/propertysetinfo.cxx
index 049827d7e45f..919198772932 100644
--- a/comphelper/source/property/propertysetinfo.cxx
+++ b/comphelper/source/property/propertysetinfo.cxx
@@ -37,7 +37,7 @@ void PropertySetInfo::addImpl(PropertyMapEntry const * pMap) 
noexcept
 
         maPropertyMap[pMap->maName] = pMap;
 
-        maProperties.clear();
+        maProperties.realloc(0);
 
         ++pMap;
     }
@@ -90,7 +90,7 @@ void PropertySetInfo::add( PropertyMapEntry const * pMap ) 
noexcept
 void PropertySetInfo::remove( const OUString& aName ) noexcept
 {
     maPropertyMap.erase( aName );
-    maProperties.clear();
+    maProperties.realloc(0);
 }
 
 Sequence< css::beans::Property > SAL_CALL PropertySetInfo::getProperties()
@@ -100,8 +100,8 @@ Sequence< css::beans::Property > SAL_CALL 
PropertySetInfo::getProperties()
     // to getProperties
     if( maProperties.size() != maPropertyMap.size() )
     {
-        maProperties.resize( maPropertyMap.size() );
-        auto propIter = maProperties.begin();
+        maProperties.realloc( maPropertyMap.size() );
+        auto propIter = maProperties.getArray();
 
         for( const auto& rProperty : maPropertyMap )
         {
@@ -115,7 +115,7 @@ Sequence< css::beans::Property > SAL_CALL 
PropertySetInfo::getProperties()
             ++propIter;
         }
     }
-    return comphelper::containerToSequence(maProperties);
+    return maProperties;
 }
 
 Property SAL_CALL PropertySetInfo::getPropertyByName( const OUString& aName )
diff --git a/include/comphelper/propertysetinfo.hxx 
b/include/comphelper/propertysetinfo.hxx
index 34717fcc6c2d..a1df9c657476 100644
--- a/include/comphelper/propertysetinfo.hxx
+++ b/include/comphelper/propertysetinfo.hxx
@@ -114,7 +114,8 @@ private:
     void addImpl(PropertyMapEntry const * pMap) noexcept;
 
     PropertyMap maPropertyMap;
-    std::vector< css::beans::Property > maProperties;
+    /// Cache the value we return in getProperties because it is expensive to 
construct
+    css::uno::Sequence< css::beans::Property > maProperties;
 };
 
 }

Reply via email to