@@ -486,8 +486,8 @@ void ToProto(
486
486
{
487
487
serializedMap->clear ();
488
488
for (const auto & [key, value] : originalMap) {
489
- auto [_, inserted ] = serializedMap->insert ( std::pair ( ToProto<TSerializedKey>(key), ToProto<TSerializedValue>(value) ));
490
- if (!inserted ) {
489
+ auto [_, emplaced ] = serializedMap->emplace ( ToProto<TSerializedKey>(key), ToProto<TSerializedValue>(value));
490
+ if (!emplaced ) {
491
491
THROW_ERROR_EXCEPTION (" Found duplicate key during protobuf map serialization" )
492
492
<< TErrorAttribute (" key" , key)
493
493
<< TErrorAttribute (" serialized_key" , ToProto<TSerializedKey>(key));
@@ -537,10 +537,12 @@ void FromProto(
537
537
const ::google::protobuf::Map<TSerializedKey, TSerializedValue>& serializedMap)
538
538
{
539
539
originalMap->clear ();
540
+ originalMap->reserve (serializedMap.size ());
540
541
for (const auto & [serializedKey, serializedValue] : serializedMap) {
541
- auto [_, inserted ] = originalMap->emplace (FromProto<TKey>(serializedKey), FromProto<TValue>(serializedValue));
542
- if (!inserted ) {
542
+ auto [_, emplaced ] = originalMap->emplace (FromProto<TKey>(serializedKey), FromProto<TValue>(serializedValue));
543
+ if (!emplaced ) {
543
544
THROW_ERROR_EXCEPTION (" Found duplicate key during protobuf map deserialization" )
545
+ << TErrorAttribute (" serialized_key" , serializedKey)
544
546
<< TErrorAttribute (" key" , FromProto<TKey>(serializedKey));
545
547
}
546
548
}
0 commit comments