sc/source/core/data/segmenttree.cxx |   34 ++++++++++++----------------------
 1 file changed, 12 insertions(+), 22 deletions(-)

New commits:
commit 10ed0fe1807b95979c1c4204734723c6211c9932
Author:     sopy <cont...@sopy.one>
AuthorDate: Sat Sep 28 14:29:54 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Wed Oct 2 09:30:23 2024 +0200

    perf: improve ScFlatUInt16RowSegments::dumpAsString()
    
    Change-Id: Ie4db90ae6e7a40824ad082606e4573e74956fdd8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174142
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Jenkins
    Reviewed-by: vivek javiya <vivek.jav...@collabora.com>
    (cherry picked from commit 6d949b587b192ca572c187c1131e2a8947269337)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174326
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/sc/source/core/data/segmenttree.cxx 
b/sc/source/core/data/segmenttree.cxx
index aa10d32544cb..e57724e61eda 100644
--- a/sc/source/core/data/segmenttree.cxx
+++ b/sc/source/core/data/segmenttree.cxx
@@ -25,6 +25,7 @@
 #include <limits>
 #include <string_view>
 #include <global.hxx>
+#include <rtl/strbuf.hxx>
 
 using ::std::numeric_limits;
 
@@ -492,23 +493,19 @@ void ScFlatBoolRowSegments::makeReady()
 
 OString ScFlatBoolRowSegments::dumpAsString()
 {
-    OString aOutput;
-    OString aSegment;
+    OStringBuffer aOutput(4096);
     RangeData aRange;
     SCROW nRow = 0;
     while (getRangeData(nRow, aRange))
     {
         if (!nRow)
-            aSegment = (aRange.mbValue ? std::string_view("1") : 
std::string_view("0")) + OString::Concat(":");
-        else
-            aSegment.clear();
+            aOutput.append(aRange.mbValue ? '1' : '0').append(':');
 
-        aSegment += OString::number(aRange.mnRow2) + " ";
-        aOutput += aSegment;
+        aOutput.append(OString::number(aRange.mnRow2) + " ");
         nRow = aRange.mnRow2 + 1;
     }
 
-    return aOutput;
+    return aOutput.makeStringAndClear();
 }
 
 ScFlatBoolColSegments::ScFlatBoolColSegments(SCCOL nMaxCol) :
@@ -564,23 +561,19 @@ void ScFlatBoolColSegments::makeReady()
 
 OString ScFlatBoolColSegments::dumpAsString()
 {
-    OString aOutput;
-    OString aSegment;
+    OStringBuffer aOutput(4096);
     RangeData aRange;
     SCCOL nCol = 0;
     while (getRangeData(nCol, aRange))
     {
         if (!nCol)
-            aSegment = (aRange.mbValue ? OString::Concat("1") : 
OString::Concat("0")) + OString::Concat(":");
-        else
-            aSegment.clear();
+            aOutput.append(aRange.mbValue ? '1' : '0').append(':');
 
-        aSegment += OString::number(aRange.mnCol2) + " ";
-        aOutput += aSegment;
+        aOutput.append(OString::number(aRange.mnCol2) + " ");
         nCol = aRange.mnCol2 + 1;
     }
 
-    return aOutput;
+    return aOutput.makeStringAndClear();
 }
 
 
ScFlatUInt16RowSegments::ForwardIterator::ForwardIterator(ScFlatUInt16RowSegments&
 rSegs) :
@@ -693,19 +686,16 @@ void ScFlatUInt16RowSegments::makeReady()
 
 OString ScFlatUInt16RowSegments::dumpAsString()
 {
-    OString aOutput;
-    OString aSegment;
+    OStringBuffer aOutput(4096);
     RangeData aRange;
     SCROW nRow = 0;
     while (getRangeData(nRow, aRange))
     {
-        aSegment = OString::number(aRange.mnValue) + ":" +
-            OString::number(aRange.mnRow2) + " ";
-        aOutput += aSegment;
+        aOutput.append(OString::number(aRange.mnValue) + ":" + 
OString::number(aRange.mnRow2) + " ");
         nRow = aRange.mnRow2 + 1;
     }
 
-    return aOutput;
+    return aOutput.makeStringAndClear();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to