From 1f1fdec37feafbdbb2fc9525440f404d93ee421f Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 17 Jul 2015 19:51:40 +0300 Subject: Add mmicrobenchmark for object serialisation --- serialise-speed | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 serialise-speed (limited to 'serialise-speed') diff --git a/serialise-speed b/serialise-speed new file mode 100755 index 00000000..d4530126 --- /dev/null +++ b/serialise-speed @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# Copyright 2010-2015 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +import sys +import time + +import cliapp + +import obnamlib + + +def measure(n, func): + start = time.clock() + for i in range(n): + func() + end = time.clock() + return end - start + + +class MicroBenchmark(cliapp.Application): + + def process_args(self, args): + n = int(args[0]) + obj = { + 'foo': 'bar', + 'big': 'x' * 1024**2, + 'dict': { + 'foo': 'yo', + 'long': ['x'] * 1024**2, + } + } + + encoded = obnamlib.serialise_object(obj) + + calibrate = measure(n, lambda: None) + encode = measure(n, lambda: obnamlib.serialise_object(obj)) + decode = measure(n, lambda: obnamlib.deserialise_object(encoded)) + print 'encode: %.1f/s' % (n/(encode - calibrate)) + print 'decode: %.1f/s' % (n/(decode - calibrate)) + + +if __name__ == '__main__': + MicroBenchmark().run() -- cgit v1.2.1