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>
This commit is contained in:
@@ -113,6 +113,11 @@ public:
|
|||||||
m_vector.clear();
|
m_vector.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void swap(sorted_vector & other)
|
||||||
|
{
|
||||||
|
m_vector.swap(other.m_vector);
|
||||||
|
}
|
||||||
|
|
||||||
void reserve(size_type amount)
|
void reserve(size_type amount)
|
||||||
{
|
{
|
||||||
m_vector.reserve(amount);
|
m_vector.reserve(amount);
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include <svl/svldllapi.h>
|
#include <svl/svldllapi.h>
|
||||||
|
|
||||||
#include <unordered_set>
|
#include <o3tl/sorted_vector.hxx>
|
||||||
|
|
||||||
class SvtBroadcaster;
|
class SvtBroadcaster;
|
||||||
class SfxHint;
|
class SfxHint;
|
||||||
@@ -29,7 +29,7 @@ class SfxHint;
|
|||||||
class SVL_DLLPUBLIC SvtListener
|
class SVL_DLLPUBLIC SvtListener
|
||||||
{
|
{
|
||||||
friend class SvtBroadcaster;
|
friend class SvtBroadcaster;
|
||||||
typedef std::unordered_set<SvtBroadcaster*> BroadcastersType;
|
typedef o3tl::sorted_vector<SvtBroadcaster*> BroadcastersType;
|
||||||
BroadcastersType maBroadcasters;
|
BroadcastersType maBroadcasters;
|
||||||
|
|
||||||
const SvtListener& operator=(const SvtListener &) = delete;
|
const SvtListener& operator=(const SvtListener &) = delete;
|
||||||
|
@@ -43,7 +43,7 @@ SvtListener::~SvtListener() COVERITY_NOEXCEPT_FALSE
|
|||||||
|
|
||||||
bool SvtListener::StartListening( SvtBroadcaster& rBroadcaster )
|
bool SvtListener::StartListening( SvtBroadcaster& rBroadcaster )
|
||||||
{
|
{
|
||||||
std::pair<BroadcastersType::iterator, bool> r =
|
std::pair<BroadcastersType::const_iterator, bool> r =
|
||||||
maBroadcasters.insert(&rBroadcaster);
|
maBroadcasters.insert(&rBroadcaster);
|
||||||
if (r.second)
|
if (r.second)
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@ bool SvtListener::StartListening( SvtBroadcaster& rBroadcaster )
|
|||||||
|
|
||||||
bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster )
|
bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster )
|
||||||
{
|
{
|
||||||
BroadcastersType::iterator it = maBroadcasters.find(&rBroadcaster);
|
BroadcastersType::const_iterator it = maBroadcasters.find(&rBroadcaster);
|
||||||
if (it == maBroadcasters.end())
|
if (it == maBroadcasters.end())
|
||||||
// Not listening to this broadcaster.
|
// Not listening to this broadcaster.
|
||||||
return false;
|
return false;
|
||||||
@@ -69,7 +69,7 @@ bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster )
|
|||||||
// back into the broadcaster again
|
// back into the broadcaster again
|
||||||
void SvtListener::BroadcasterDying( SvtBroadcaster& rBroadcaster )
|
void SvtListener::BroadcasterDying( SvtBroadcaster& rBroadcaster )
|
||||||
{
|
{
|
||||||
BroadcastersType::iterator it = maBroadcasters.find(&rBroadcaster);
|
BroadcastersType::const_iterator it = maBroadcasters.find(&rBroadcaster);
|
||||||
if (it != maBroadcasters.end())
|
if (it != maBroadcasters.end())
|
||||||
maBroadcasters.erase(it);
|
maBroadcasters.erase(it);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user