From 8922d83a070c06485a7d62447a79178a5b4fb27f Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Tue, 23 Jun 2020 12:09:45 +0200 Subject: 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 (cherry picked from commit 97965876459d8cfda0b653551708eb14de36e632) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96885 (cherry picked from commit 0638adcb101d870b169a34d980d41ef4fc742a94) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96996 --- sc/source/core/data/column4.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'sc') diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index a06dc0f0d939..7acd4b0a9183 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -1220,8 +1220,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()); } }; -- cgit v1.2.3