sc/source/core/data/segmenttree.cxx | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-)
New commits: commit 6d949b587b192ca572c187c1131e2a8947269337 Author: sopy <cont...@sopy.one> AuthorDate: Sat Sep 28 14:29:54 2024 +0000 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Tue Oct 1 23:02:42 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> diff --git a/sc/source/core/data/segmenttree.cxx b/sc/source/core/data/segmenttree.cxx index 7ae8eba29e16..a39c956a478b 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: */