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