WIP.
diff --git a/benchmarks/BUILD b/benchmarks/BUILD
index 87315a3..20d28dd 100644
--- a/benchmarks/BUILD
+++ b/benchmarks/BUILD
@@ -51,3 +51,35 @@
"@com_google_protobuf//:protobuf",
],
)
+
+# Size benchmarks.
+
+upb_proto_library(
+ name = "empty_upb_proto",
+ deps = ["@com_google_protobuf//:empty_proto"],
+)
+
+cc_proto_library(
+ name = "empty_cc_proto",
+ deps = ["@com_google_protobuf//:empty_proto"],
+)
+
+cc_binary(
+ name = "upb_binary",
+ testonly = 1,
+ srcs = ["upb_binary.c"],
+ deps = [
+ ":empty_upb_proto",
+ ],
+ #features = ["fully_static_link"],
+)
+
+cc_binary(
+ name = "protobuf_binary",
+ testonly = 1,
+ srcs = ["protobuf_binary.cc"],
+ deps = [
+ ":empty_cc_proto",
+ ],
+ #features = ["fully_static_link"],
+)
diff --git a/benchmarks/protobuf_binary.cc b/benchmarks/protobuf_binary.cc
new file mode 100644
index 0000000..b585aa6
--- /dev/null
+++ b/benchmarks/protobuf_binary.cc
@@ -0,0 +1,10 @@
+
+#include "google/protobuf/empty.pb.h"
+
+char buf[1];
+
+int main() {
+ google::protobuf::Empty proto;
+ proto.ParseFromArray(buf, 1);
+ proto.SerializeToArray(buf, 1);
+}
diff --git a/benchmarks/small.proto b/benchmarks/small.proto
new file mode 100644
index 0000000..cfc59c2
--- /dev/null
+++ b/benchmarks/small.proto
@@ -0,0 +1,35 @@
+// A small proto, for measuring the overhead of a minimal use of
+// protocol buffers.
+
+syntax = "proto3";
+
+option optimize_for = LITE_RUNTIME;
+option cc_enable_arenas = true;
+
+package upb_benchmark;
+
+message Person {
+ string name = 1;
+ int32 id = 2; // Unique ID number for this person.
+ string email = 3;
+
+ enum PhoneType {
+ MOBILE = 0;
+ HOME = 1;
+ WORK = 2;
+ }
+
+ message PhoneNumber {
+ string number = 1;
+ PhoneType type = 2;
+ }
+
+ repeated PhoneNumber phones = 4;
+
+ int64 last_updated = 5;
+}
+
+// Our address book file is just one of these.
+message AddressBook {
+ repeated Person people = 1;
+}
diff --git a/benchmarks/upb_binary.c b/benchmarks/upb_binary.c
new file mode 100644
index 0000000..8e2d86b
--- /dev/null
+++ b/benchmarks/upb_binary.c
@@ -0,0 +1,12 @@
+
+#include "google/protobuf/empty.upb.h"
+
+char buf[1];
+
+int main() {
+ upb_arena *arena = upb_arena_new();
+ size_t size;
+ google_protobuf_Empty *proto = google_protobuf_Empty_parse(buf, 1, arena);
+ google_protobuf_Empty_serialize(proto, arena, &size);
+ return 0;
+}