diff --git a/benchmarks/bin/repeated_field.dart b/benchmarks/bin/repeated_field.dart new file mode 100644 index 00000000..fe7f6849 --- /dev/null +++ b/benchmarks/bin/repeated_field.dart @@ -0,0 +1,45 @@ +import 'dart:typed_data'; + +import 'package:fixnum/fixnum.dart'; +import 'package:protobuf_benchmarks/benchmark_base.dart'; +import 'package:protobuf_benchmarks/generated/f12.pb.dart' as f12; +import 'package:protobuf_benchmarks/generated/google_message2.pb.dart'; + +class RepeatedBenchmark extends BenchmarkBase { + final Uint8List _buffer; + + RepeatedBenchmark(super.name, GoogleMessage2 message) + : _buffer = message.writeToBuffer(); + + @override + void run() => GoogleMessage2.fromBuffer(_buffer); +} + +class RepeatedEnumBenchmark extends BenchmarkBase { + final Uint8List _buffer; + + RepeatedEnumBenchmark(super.name, f12.A58 message) + : _buffer = message.writeToBuffer(); + + @override + void run() => f12.A58.fromBuffer(_buffer); +} + +void main() { + const kSize = 500000; + + RepeatedBenchmark( + 'repeated_in64', + GoogleMessage2(field130: List.generate(kSize, Int64.new)), + ).report(); + + RepeatedBenchmark( + 'repeated_string', + GoogleMessage2(field128: List.generate(kSize, (i) => i.toString())), + ).report(); + + RepeatedEnumBenchmark( + 'repeated_enum', + f12.A58(a306: List.generate(kSize, (_) => f12.A322.A324)), + ).report(); +}