diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-06-23 12:09:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-06-24 09:18:33 +0200 |
commit | 0638adcb101d870b169a34d980d41ef4fc742a94 (patch) | |
tree | 48bf92616bd8794a76a8a5f8ceda6413b7336ae5 /sc | |
parent | 0453702ea9cf48fc5764bb7d2d6685e0234e09cb (diff) |
tdf#133699 Slow sorting of a column
reserve inside a loop is a pessimization, since it breaks the
logarithmic resizing of the std::vector data area.
Also use the std::vector::insert method, instead of std::copy, since
the insert method will perform less resizing operations.
On my machine, this takes the sort operation from 25s to less than 1s.
Change-Id: I30b99d42c56abc5a4ad5c133c7579fac3952173c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96929
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 97965876459d8cfda0b653551708eb14de36e632)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96885
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/data/column4.cxx | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index 3ca9a2892357..06f4684a5acd 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -1221,8 +1221,7 @@ public: void operator() ( size_t /*nRow*/, SvtBroadcaster* p ) { SvtBroadcaster::ListenersType& rLis = p->GetAllListeners(); - mrListeners.reserve(mrListeners.size() + rLis.size()); - std::copy(rLis.begin(), rLis.end(), std::back_inserter(mrListeners)); + mrListeners.insert(mrListeners.end(), rLis.begin(), rLis.end()); } }; |