From 137991c7b2def357b9f18d0cd01ba671ebf1392d Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 7 Jul 2009 01:10:20 -0700 Subject: Added the beginnings of a benchmark. --- benchmark.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 benchmark.c (limited to 'benchmark.c') diff --git a/benchmark.c b/benchmark.c new file mode 100644 index 0000000..03d8456 --- /dev/null +++ b/benchmark.c @@ -0,0 +1,49 @@ + +#include "upb_context.h" +#include "upb_msg.h" + +int main () +{ + struct upb_context c; + upb_context_init(&c); + struct upb_string fds; + if(!upb_strreadfile("google_speed.proto.bin", &fds)) { + fprintf(stderr, "Couldn't read google_speed.proto.bin.\n"); + return 1; + } + if(!upb_context_parsefds(&c, &fds)) { + fprintf(stderr, "Error parsing or resolving proto.\n"); + return 1; + } + upb_strfree(fds); + struct upb_string proto_name = UPB_STRLIT("benchmarks.SpeedMessage2"); + struct upb_symtab_entry *e = upb_context_lookup(&c, &proto_name); + if(!e || e->type != UPB_SYM_MESSAGE) { + fprintf(stderr, "Error finding symbol '" UPB_STRFMT "'.\n", + UPB_STRARG(proto_name)); + return 1; + } + + struct upb_msg *m = e->ref.msg; + struct upb_msg_parse_state s; + void *data = upb_msgdata_new(m); + upb_msg_parse_init(&s, data, m, false, true); + size_t read; + struct upb_string str; + if(!upb_strreadfile("google_message2.dat", &str)) { + fprintf(stderr, "Error reading google_message2.dat\n"); + return 1; + } + upb_status_t status = upb_msg_parse(&s, str.ptr, str.byte_len, &read); + upb_msg_parse_free(&s); + upb_msgdata_free(data, m, true); + upb_context_free(&c); + upb_strfree(str); + if(status == UPB_STATUS_OK && read == str.byte_len) { + fprintf(stderr, "Success!\n"); + return 0; + } else { + fprintf(stderr, "Error. :( error=%d, read=%d\n", status, read); + return 1; + } +} -- cgit v1.2.3