diff options
author | Christopher Peplin <chris.peplin@rhubarbtech.com> | 2013-08-22 10:35:35 -0400 |
---|---|---|
committer | Christopher Peplin <chris.peplin@rhubarbtech.com> | 2014-01-07 13:18:09 -0500 |
commit | f85bc9eb9a932988bdab198f9da20c2fea55bac2 (patch) | |
tree | 277e761e04bad7b3aa647e9e403d9230bff2d7f7 /benchmark/proto/compare_sizes.py | |
parent | e9788f71fb5a4be6bc69605539b0135f0ba1829a (diff) |
Add benchmarking tests for binary encoding (moved from cantranslator).
Diffstat (limited to 'benchmark/proto/compare_sizes.py')
-rw-r--r-- | benchmark/proto/compare_sizes.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/benchmark/proto/compare_sizes.py b/benchmark/proto/compare_sizes.py new file mode 100644 index 00000000..ce6b25b9 --- /dev/null +++ b/benchmark/proto/compare_sizes.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +from __future__ import division +import sys + +import openxc_pb2 +import json + +def sizeof_fmt(num): + for unit in ['bytes', 'KB', 'MB', 'GB', 'TB']: + if num < 1024.0: + return "%3.1f%s" % (num, unit) + num /= 1024.0 + +total_json_size = 0 +total_binary_size = 0 + +trace_file = sys.argv[1] +for line in open(trace_file): + raw_message = json.loads(line) + total_json_size += len(json.dumps(raw_message)) + binary_message = openxc_pb2.RawMessage() + binary_message.message_id = raw_message['id'] + binary_message.data = int(raw_message['data'], 0) + total_binary_size += len(binary_message.SerializeToString()) + +print("For the trace file %s..." % trace_file) +print("Total transferred JSON size is %s" % sizeof_fmt(total_json_size)) +print("Total transferred binary size is %s" % sizeof_fmt(total_binary_size)) +print("Binary encoding is %f%% smaller than JSON overall" % ( + 100 - (total_binary_size / total_json_size * 100))) |