diff options
author | Jon Skeet <skeet@pobox.com> | 2015-06-12 11:19:50 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2015-06-12 11:19:50 +0100 |
commit | 1b71db1180953e592e134ddd509f54d6024df593 (patch) | |
tree | 66a88850f0b176802431329b9870b00858e41cfc /src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc | |
parent | 9b66768e257dd8e61895d8a2c40f078f9987b577 (diff) |
Optimization of CalculateSize: avoid foreach over empty lists.
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc')
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc b/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc index 6228aa67..d7e4d80f 100644 --- a/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc @@ -90,8 +90,10 @@ void RepeatedMessageFieldGenerator::GenerateSerializedSizeCode(io::Printer* prin // TODO(jonskeet): Put this into CodedOutputStream. printer->Print( variables_, - "foreach ($type_name$ element in $name$_) {\n" - " size += pb::CodedOutputStream.ComputeMessageSize($number$, element);\n" + "if ($name$_.Count > 0) {\n" + " foreach ($type_name$ element in $name$_) {\n" + " size += pb::CodedOutputStream.ComputeMessageSize($number$, element);\n" + " }\n" "}\n"); } |