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: */