Skip to content

Commit f785311

Browse files
author
ivanmorozov333
committed
speed up
1 parent f323cb3 commit f785311

File tree

5 files changed

+93
-87
lines changed

5 files changed

+93
-87
lines changed

ydb/core/tx/columnshard/splitter/batch_slice.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,34 @@ namespace NKikimr::NOlap {
99

1010
bool TGeneralSerializedSlice::GroupBlobsImpl(const NSplitter::TGroupFeatures& features, std::vector<TSplittedBlob>& blobs) {
1111
AFL_VERIFY(features.GetSplitSettings().GetMaxBlobSize() >= 2 * features.GetSplitSettings().GetMinBlobSize())(
12-
"event", "we need be sure that 2 * small < big");
13-
std::sort(Data.begin(), Data.end());
14-
THashMap<ui32, TSplittedEntity::TNormalizedBlobChunks> chunksPreparation;
12+
"event", "we need be sure that 2 * small < big");
13+
const auto pred = [](const TSplittedEntity* l, const TSplittedEntity* r) {
14+
return r->GetSize() < l->GetSize();
15+
};
16+
std::vector<TSplittedEntity*> dataPtr;
1517
for (auto&& i : Data) {
1618
if (!features.Contains(i.GetEntityId())) {
1719
continue;
1820
}
21+
dataPtr.emplace_back(&i);
22+
}
23+
std::sort(dataPtr.begin(), dataPtr.end(), pred);
24+
ui32 count = 0;
25+
THashMap<ui32, TSplittedEntity::TNormalizedBlobChunks> chunksPreparation;
26+
for (auto&& i : dataPtr) {
27+
count += i->GetChunks().size() * 2;
1928
TSplittedEntity::TNormalizedBlobChunks normalizedChunks(features.GetSplitSettings().GetMinBlobSize(),
2029
features.GetSplitSettings().GetMaxBlobSize(), features.GetSplitSettings().GetBlobSizeTolerance(), Schema, Counters, InternalSplitsCount);
21-
auto chunksInit = i.BuildBlobChunks(features.GetSplitSettings().GetMaxBlobSize(), Schema, Counters, InternalSplitsCount);
30+
normalizedChunks.Reserve(i->GetChunks().size() * 2);
31+
auto chunksInit = i->BuildBlobChunks(features.GetSplitSettings().GetMaxBlobSize(), Schema, Counters, InternalSplitsCount);
2232
for (auto&& c : chunksInit) {
2333
normalizedChunks.AddChunk(std::move(c));
2434
}
25-
chunksPreparation.emplace(i.GetEntityId(), normalizedChunks.Normalize());
35+
chunksPreparation.emplace(i->GetEntityId(), normalizedChunks.Normalize());
2636
}
2737
TSplittedEntity::TNormalizedBlobChunks result(features.GetSplitSettings().GetMinBlobSize(), features.GetSplitSettings().GetMaxBlobSize(),
2838
features.GetSplitSettings().GetBlobSizeTolerance(), Schema, Counters, InternalSplitsCount);
39+
result.Reserve(count);
2940
for (auto&& i : chunksPreparation) {
3041
result.Merge(std::move(i.second));
3142
}

ydb/core/tx/columnshard/splitter/batch_slice.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,6 @@ class TGeneralSerializedSlice {
128128
void MergeSlice(TGeneralSerializedSlice&& slice);
129129

130130
bool GroupBlobs(std::vector<TSplittedBlob>& blobs, const NSplitter::TEntityGroups& groups);
131-
132-
bool operator<(const TGeneralSerializedSlice& item) const {
133-
return Size < item.Size;
134-
}
135131
};
136132

137133
}

ydb/core/tx/columnshard/splitter/column_info.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ class TSplittedEntity {
240240
ui32* InternalSplitsCount = nullptr;
241241

242242
public:
243+
void Reserve(const ui32 count) {
244+
Normal.reserve(count);
245+
Small.reserve(count);
246+
}
247+
243248
TNormalizedBlobChunks(const ui32 minSize, const ui32 maxSize, const ui32 tolerance, const NArrow::NSplitter::ISchemaDetailInfo::TPtr& schema, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters,
244249
ui32& internalSplitsCount)
245250
: MinSize(minSize)
@@ -265,8 +270,6 @@ class TSplittedEntity {
265270
}
266271

267272
void Merge(TNormalizedBlobChunks&& normalizer) {
268-
Normal.reserve(Normal.size() + normalizer.Normal.size());
269-
Small.reserve(Small.size() + normalizer.Small.size());
270273
for (auto&& i : normalizer.Normal) {
271274
AddChunk(std::move(i));
272275
}
@@ -398,10 +401,6 @@ class TSplittedEntity {
398401
Chunks = std::move(result);
399402
}
400403

401-
bool operator<(const TSplittedEntity& item) const {
402-
return Size > item.Size;
403-
}
404-
405404
std::shared_ptr<arrow::Scalar> GetFirstScalar() const {
406405
Y_ABORT_UNLESS(Chunks.size());
407406
return Chunks.front()->GetFirstScalar();

ydb/library/accessor/positive_integer.cpp

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,55 @@
44
namespace NKikimr {
55

66
TPositiveControlInteger::TPositiveControlInteger(const i64 value)
7-
: Value(value) {
8-
AFL_VERIFY(0 <= value);
7+
: Value(value) {
8+
AFL_VERIFY(0 <= value);
99
}
1010

1111
TPositiveControlInteger::TPositiveControlInteger(const ui64 value): Value(value) {
12-
AFL_VERIFY(Value.Val() >= 0)("value", Value.Val())("init", value);
12+
AFL_VERIFY(Value.Val() >= 0)("value", Value.Val())("init", value);
1313
}
1414

1515
ui64 TPositiveControlInteger::Add(const ui64 value) {
16-
const i64 result = Value.Add(value);
17-
AFL_VERIFY(result >= 0)("base", Value.Val())("delta", value)("result", result);
18-
return result;
16+
const i64 result = Value.Add(value);
17+
AFL_VERIFY(result >= 0)("base", Value.Val())("delta", value)("result", result);
18+
return result;
1919
}
2020

2121
ui64 TPositiveControlInteger::Sub(const ui64 value) {
22-
i64 valDelta = Value.Sub(value);
23-
AFL_VERIFY(valDelta >= 0)("base", Value.Val())("delta", value)("sub", valDelta);
24-
return valDelta;
22+
i64 valDelta = Value.Sub(value);
23+
AFL_VERIFY(valDelta >= 0)("base", Value.Val())("delta", value)("sub", valDelta);
24+
return valDelta;
2525
}
2626

2727
ui64 TPositiveControlInteger::GetDec() const {
28-
const i64 result = Value.Val() - 1;
29-
AFL_VERIFY(result >= 0);
30-
return result;
28+
const i64 result = Value.Val() - 1;
29+
AFL_VERIFY(result >= 0);
30+
return result;
3131
}
3232

3333
ui64 TPositiveControlInteger::Val() const {
34-
return Value.Val();
34+
return Value.Val();
3535
}
3636

37-
TPositiveIncreasingControlInteger&TPositiveIncreasingControlInteger::operator=(const TPositiveIncreasingControlInteger& v) {
38-
if (&v != this) {
39-
AFL_VERIFY(Value < v.Value);
40-
Value = v.Value;
41-
}
42-
return *this;
37+
TPositiveIncreasingControlInteger& TPositiveIncreasingControlInteger::operator=(const TPositiveIncreasingControlInteger& v) {
38+
if (&v != this) {
39+
AFL_VERIFY(Value < v.Value);
40+
Value = v.Value;
41+
}
42+
return *this;
4343
}
4444

4545
} //namespace NKikimr
4646

4747
template<>
4848
void Out<NKikimr::TPositiveControlInteger>(IOutputStream& o,
49-
typename TTypeTraits<NKikimr::TPositiveControlInteger>::TFuncParam x) {
50-
o << x.Val();
49+
typename TTypeTraits<NKikimr::TPositiveControlInteger>::TFuncParam x) {
50+
o << x.Val();
5151
}
5252

5353

5454
template<>
5555
void Out<NKikimr::TPositiveIncreasingControlInteger>(IOutputStream& o,
56-
typename TTypeTraits<NKikimr::TPositiveIncreasingControlInteger>::TFuncParam x) {
57-
o << x.Val();
56+
typename TTypeTraits<NKikimr::TPositiveIncreasingControlInteger>::TFuncParam x) {
57+
o << x.Val();
5858
}

ydb/library/accessor/positive_integer.h

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,59 +8,59 @@ namespace NKikimr {
88

99
class TPositiveControlInteger {
1010
private:
11-
TAtomicCounter Value = 0;
11+
TAtomicCounter Value = 0;
1212
public:
13-
TPositiveControlInteger() = default;
14-
TPositiveControlInteger(const ui64 value);
15-
TPositiveControlInteger(const ui32 value)
16-
: Value(value) {
13+
TPositiveControlInteger() = default;
14+
TPositiveControlInteger(const ui64 value);
15+
TPositiveControlInteger(const ui32 value)
16+
: Value(value) {
1717

18-
}
19-
TPositiveControlInteger(const i64 value);
20-
ui64 Add(const ui64 value);
21-
ui64 Sub(const ui64 value);
22-
ui64 Inc() {
23-
return Add(1);
24-
}
25-
ui64 Dec() {
26-
return Sub(1);
27-
}
28-
ui64 GetDec() const;
29-
ui64 Val() const;
30-
bool operator!() const {
31-
return !Value.Val();
32-
}
33-
operator ui64() const {
34-
return Value.Val();
35-
}
36-
ui64 operator++() {
37-
return Inc();
38-
}
39-
ui64 operator--() {
40-
return Dec();
41-
}
18+
}
19+
TPositiveControlInteger(const i64 value);
20+
ui64 Add(const ui64 value);
21+
ui64 Sub(const ui64 value);
22+
ui64 Inc() {
23+
return Add(1);
24+
}
25+
ui64 Dec() {
26+
return Sub(1);
27+
}
28+
ui64 GetDec() const;
29+
ui64 Val() const;
30+
bool operator!() const {
31+
return !Value.Val();
32+
}
33+
operator ui64() const {
34+
return Value.Val();
35+
}
36+
ui64 operator++() {
37+
return Inc();
38+
}
39+
ui64 operator--() {
40+
return Dec();
41+
}
4242
};
4343

4444
class TPositiveIncreasingControlInteger {
45-
private:
46-
ui64 Value = 0;
47-
public:
48-
constexpr TPositiveIncreasingControlInteger() = default;
49-
explicit constexpr TPositiveIncreasingControlInteger(const ui64 value)
50-
: Value(value) {
51-
}
52-
TPositiveIncreasingControlInteger(const TPositiveIncreasingControlInteger&) = default;
53-
TPositiveIncreasingControlInteger& operator=(const TPositiveIncreasingControlInteger& v);
45+
private:
46+
ui64 Value = 0;
47+
public:
48+
constexpr TPositiveIncreasingControlInteger() = default;
49+
explicit constexpr TPositiveIncreasingControlInteger(const ui64 value)
50+
: Value(value) {
51+
}
52+
TPositiveIncreasingControlInteger(const TPositiveIncreasingControlInteger&) = default;
53+
TPositiveIncreasingControlInteger& operator=(const TPositiveIncreasingControlInteger& v);
5454

55-
TPositiveIncreasingControlInteger operator+(ui64 v) const {
56-
return TPositiveIncreasingControlInteger(Value + v);
57-
}
58-
TPositiveIncreasingControlInteger operator-(const ui64 v) const {
59-
AFL_VERIFY(v <= Value);
60-
return TPositiveIncreasingControlInteger(Value - v);
61-
}
62-
ui64 Val() const {
63-
return Value;
64-
}
65-
};
55+
TPositiveIncreasingControlInteger operator+(ui64 v) const {
56+
return TPositiveIncreasingControlInteger(Value + v);
57+
}
58+
TPositiveIncreasingControlInteger operator-(const ui64 v) const {
59+
AFL_VERIFY(v <= Value);
60+
return TPositiveIncreasingControlInteger(Value - v);
61+
}
62+
ui64 Val() const {
63+
return Value;
64+
}
65+
};
6666
}

0 commit comments

Comments
 (0)