summaryrefslogtreecommitdiffstats
path: root/benchmark/proto
diff options
context:
space:
mode:
authorChristopher Peplin <chris.peplin@rhubarbtech.com>2013-08-22 16:57:54 -0400
committerChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-07 13:18:09 -0500
commitd3d7bf0e09ae6a4b8161c19e224742ae3d06d620 (patch)
tree7525ec63c219f3dd41a61e08de4b354402b909f0 /benchmark/proto
parent8f87419564532b304dec7105afe005f85cdec0e1 (diff)
Benchmark how much overhead each encoding adds vs raw CAN.
Diffstat (limited to 'benchmark/proto')
-rwxr-xr-xbenchmark/proto/compare_sizes.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/benchmark/proto/compare_sizes.py b/benchmark/proto/compare_sizes.py
index b8b79bb9..b6936df6 100755
--- a/benchmark/proto/compare_sizes.py
+++ b/benchmark/proto/compare_sizes.py
@@ -13,6 +13,7 @@ def sizeof_fmt(num):
return "%3.1f%s" % (num, unit)
num /= 1024.0
+total_raw_can_size = 0
total_raw_json_size = 0
total_raw_binary_size = 0
total_translated_json_size = 0
@@ -26,6 +27,9 @@ for trace_file in sys.argv[1:]:
continue
if 'id' and 'data' in json_message:
+ # rough approx. that CAN messages are 10 bytes - they could be less
+ # but most of ours are full 64+11 bits
+ total_raw_can_size += 10
total_raw_json_size += len(line)
binary_message = openxc_pb2.RawMessage()
binary_message.message_id = json_message['id']
@@ -45,6 +49,7 @@ for trace_file in sys.argv[1:]:
print("For the %d trace files given..." % len(sys.argv[1:]))
+print("Total transferred raw CAN size is %s" % sizeof_fmt(total_raw_can_size))
print("Total transferred raw JSON size is %s" % sizeof_fmt(total_raw_json_size))
print("Total transferred raw binary size is %s" % sizeof_fmt(total_raw_binary_size))
print("Total transferred translated JSON size is %s" %
@@ -57,9 +62,16 @@ print("Total transferred JSON size is %s" % sizeof_fmt(total_json_size))
total_binary_size = total_raw_binary_size + total_translated_binary_size
print("Total transferred binary size is %s" % sizeof_fmt(total_binary_size))
-print("Binary encoding is %f%% smaller than JSON for raw messages" % (
- 100 - (total_raw_binary_size / total_raw_json_size * 100)))
-print("Binary encoding is %f%% smaller than JSON for translated messages" % (
- 100 - (total_translated_binary_size / total_translated_json_size * 100)))
+if total_raw_can_size > 0:
+ print("Binary encoding adds %f%% overhead to raw CAN messages" % (
+ total_raw_binary_size / total_raw_can_size * 100 - 100))
+ print("JSON encoding adds %f%% overhead to raw CAN messages" % (
+ total_raw_json_size / total_raw_can_size * 100 - 100))
+if total_raw_json_size > 0:
+ print("Binary encoding is %f%% smaller than JSON for raw messages" % (
+ 100 - (total_raw_binary_size / total_raw_json_size * 100)))
+if total_translated_json_size > 0:
+ print("Binary encoding is %f%% smaller than JSON for translated messages" % (
+ 100 - (total_translated_binary_size / total_translated_json_size * 100)))
print("Binary encoding is %f%% smaller than JSON overall" % (
100 - (total_binary_size / total_json_size * 100)))