diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-05-13 16:28:14 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-05-16 11:49:25 +0200 |
commit | b27755b704fa4866025f1ed6d26c0d43aafa3407 (patch) | |
tree | 94513403f93738df001d7f121912b72fca053efe | |
parent | 4b04eae81478d4aa19f3bdc3f2d6247063aeb6cd (diff) |
tdf#125254 Performance: A spreadsheet opens too slow, part1
This takes the opening time from 55s to 48s for me.
Change-Id: Ia60fff33e9948e0bd6906c82b48aa30f8b2551bb
Reviewed-on: https://gerrit.libreoffice.org/72394
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | include/o3tl/sorted_vector.hxx | 5 | ||||
-rw-r--r-- | include/svl/listener.hxx | 4 | ||||
-rw-r--r-- | svl/source/notify/listener.cxx | 6 |
3 files changed, 10 insertions, 5 deletions
diff --git a/include/o3tl/sorted_vector.hxx b/include/o3tl/sorted_vector.hxx index 8324e333198a..35882ab9afca 100644 --- a/include/o3tl/sorted_vector.hxx +++ b/include/o3tl/sorted_vector.hxx @@ -113,6 +113,11 @@ public: m_vector.clear(); } + void swap(sorted_vector & other) + { + m_vector.swap(other.m_vector); + } + void reserve(size_type amount) { m_vector.reserve(amount); diff --git a/include/svl/listener.hxx b/include/svl/listener.hxx index 5ba14aea953e..38d72552618a 100644 --- a/include/svl/listener.hxx +++ b/include/svl/listener.hxx @@ -21,7 +21,7 @@ #include <svl/svldllapi.h> -#include <unordered_set> +#include <o3tl/sorted_vector.hxx> class SvtBroadcaster; class SfxHint; @@ -29,7 +29,7 @@ class SfxHint; class SVL_DLLPUBLIC SvtListener { friend class SvtBroadcaster; - typedef std::unordered_set<SvtBroadcaster*> BroadcastersType; + typedef o3tl::sorted_vector<SvtBroadcaster*> BroadcastersType; BroadcastersType maBroadcasters; const SvtListener& operator=(const SvtListener &) = delete; diff --git a/svl/source/notify/listener.cxx b/svl/source/notify/listener.cxx index 22d5508a3cef..38856a835d4f 100644 --- a/svl/source/notify/listener.cxx +++ b/svl/source/notify/listener.cxx @@ -43,7 +43,7 @@ SvtListener::~SvtListener() COVERITY_NOEXCEPT_FALSE bool SvtListener::StartListening( SvtBroadcaster& rBroadcaster ) { - std::pair<BroadcastersType::iterator, bool> r = + std::pair<BroadcastersType::const_iterator, bool> r = maBroadcasters.insert(&rBroadcaster); if (r.second) { @@ -55,7 +55,7 @@ bool SvtListener::StartListening( SvtBroadcaster& rBroadcaster ) bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster ) { - BroadcastersType::iterator it = maBroadcasters.find(&rBroadcaster); + BroadcastersType::const_iterator it = maBroadcasters.find(&rBroadcaster); if (it == maBroadcasters.end()) // Not listening to this broadcaster. return false; @@ -69,7 +69,7 @@ bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster ) // back into the broadcaster again void SvtListener::BroadcasterDying( SvtBroadcaster& rBroadcaster ) { - BroadcastersType::iterator it = maBroadcasters.find(&rBroadcaster); + BroadcastersType::const_iterator it = maBroadcasters.find(&rBroadcaster); if (it != maBroadcasters.end()) maBroadcasters.erase(it); } |