xref: add benchmark of protobuf for comparison

BenchmarkProtoEncodeRequest-12 	 1000000	      1359 ns/op
BenchmarkProtoDecodeRequest-12 	 1000000	      1816 ns/op
BenchmarkProtoEncodeResponse-12	 2000000	       900 ns/op
BenchmarkProtoDecodeResponse-12	 1000000	      1200 ns/op
BenchmarkVomEncodeRequest-12 	  500000	      3207 ns/op
BenchmarkVomDecodeRequest-12 	  200000	     11212 ns/op
BenchmarkVomEncodeResponse-12	 1000000	      2315 ns/op
BenchmarkVomDecodeResponse-12	  500000	      2157 ns/op

Change-Id: I9bf5cf6a092116a6e01a91d64ae71ab02e6eec89
diff --git a/runtime/internal/rpc/benchmark/rpc.proto b/runtime/internal/rpc/benchmark/rpc.proto
new file mode 100644
index 0000000..1f94a55
--- /dev/null
+++ b/runtime/internal/rpc/benchmark/rpc.proto
@@ -0,0 +1,97 @@
+package benchmark;
+
+message timeTime {
+    required int64 seconds = 1;
+    required int32 nanos = 2;
+}
+
+message vtraceAnnotation {
+    required timeTime when = 1;
+    required string msg = 2;
+}
+
+message vtraceSpanRecord {
+    required bytes id = 1;
+    required bytes parent = 2;
+    required string name = 3;
+
+    required timeTime start = 4;
+    required timeTime end = 5;
+
+    repeated vtraceAnnotation annotations = 6;
+}
+
+message vtraceTraceRecord {
+    required bytes id = 1;
+    repeated vtraceSpanRecord spanRecord = 2;
+}
+
+
+message vtraceResponse {
+    required int32 traceFlags = 1;
+    required vtraceTraceRecord trace = 2;
+}
+
+message rpcResponse {
+    optional string error = 1;
+    required bool endStreamResults = 2;
+    required uint64 numPosResults = 3;
+
+    required vtraceResponse traceResponse = 4;
+    required bool ackBlessings = 5;
+}
+
+message timeDuration {
+    required int64 seconds = 1;
+    required int64 nanos = 2;
+}
+
+message timeWireDeadline {
+    required timeDuration fromNow = 1;
+    required bool noDeadline = 2;
+}
+
+message signature {
+    required bytes purpose = 1;
+    required string hash = 2;
+    required bytes r = 3;
+    required bytes s = 4;
+}
+
+message caveat {
+    required bytes id = 1;
+    required bytes paramVom = 2;
+}
+
+message certificate {
+    required string extension = 1;
+    required bytes publicKey = 2;
+    repeated caveat caveats = 3;
+    required signature signature = 4;
+}
+
+message certificateChain {
+    repeated certificate certificates = 1;
+}
+
+message securityWireBlessings {
+    repeated certificateChain certificateChains = 1;
+}
+
+message vtraceRequest {
+    required bytes spanId = 1;
+    required bytes traceId = 2;
+    required int32 flags = 3;
+    required int32 logLevel = 4;
+}
+
+message rpcRequest {
+    required string suffix = 1;
+    required string method = 2;
+    required uint64 numPosArgs = 3;
+    required bool endStreamArgs = 4;
+    required timeWireDeadline deadline = 5;
+    required securityWireBlessings grantedBlessings = 6;
+    required vtraceRequest traceRequest = 7;
+    required string language = 8;
+}
\ No newline at end of file