mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
Use reserve() over resize() for Map
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
This commit is contained in:
parent
9e740eb9d0
commit
b511abb72c
@ -64,8 +64,9 @@ MutableColumnPtr ColumnMap::cloneResized(size_t new_size) const
|
|||||||
|
|
||||||
Field ColumnMap::operator[](size_t n) const
|
Field ColumnMap::operator[](size_t n) const
|
||||||
{
|
{
|
||||||
auto array = DB::get<Array>((*nested)[n]);
|
Field res;
|
||||||
return Map(std::make_move_iterator(array.begin()), std::make_move_iterator(array.end()));
|
get(n, res);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColumnMap::get(size_t n, Field & res) const
|
void ColumnMap::get(size_t n, Field & res) const
|
||||||
@ -74,11 +75,12 @@ void ColumnMap::get(size_t n, Field & res) const
|
|||||||
size_t offset = offsets[n - 1];
|
size_t offset = offsets[n - 1];
|
||||||
size_t size = offsets[n] - offsets[n - 1];
|
size_t size = offsets[n] - offsets[n - 1];
|
||||||
|
|
||||||
res = Map(size);
|
res = Map();
|
||||||
auto & map = DB::get<Map &>(res);
|
auto & map = DB::get<Map &>(res);
|
||||||
|
map.reserve(size);
|
||||||
|
|
||||||
for (size_t i = 0; i < size; ++i)
|
for (size_t i = 0; i < size; ++i)
|
||||||
getNestedData().get(offset + i, map[i]);
|
map.push_back(getNestedData()[offset + i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ColumnMap::isDefaultAt(size_t n) const
|
bool ColumnMap::isDefaultAt(size_t n) const
|
||||||
|
@ -53,13 +53,15 @@ void SerializationMap::deserializeBinary(Field & field, ReadBuffer & istr) const
|
|||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
readVarUInt(size, istr);
|
readVarUInt(size, istr);
|
||||||
field = Map(size);
|
field = Map();
|
||||||
for (auto & elem : field.get<Map &>())
|
Map & map = field.get<Map &>();
|
||||||
|
map.reserve(size);
|
||||||
|
for (size_t i = 0; i < size; ++i)
|
||||||
{
|
{
|
||||||
Tuple tuple(2);
|
Tuple tuple(2);
|
||||||
key->deserializeBinary(tuple[0], istr);
|
key->deserializeBinary(tuple[0], istr);
|
||||||
value->deserializeBinary(tuple[1], istr);
|
value->deserializeBinary(tuple[1], istr);
|
||||||
elem = std::move(tuple);
|
map.push_back(std::move(tuple));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user