diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-11-19 08:57:43 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-11-19 08:57:43 -0500 |
commit | 29ef2ced664a8e3e4e87dc8c27c60d3badd4289f (patch) | |
tree | e53c0b468a9a98f159f514d21cd84aba5eac6c55 /perf | |
parent | 01374a3ddd117764397facc6084bfca49516813c (diff) | |
download | python-coveragepy-29ef2ced664a8e3e4e87dc8c27c60d3badd4289f.tar.gz |
This file was a performance test of sorts
Diffstat (limited to 'perf')
-rw-r--r-- | perf/bug397.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/perf/bug397.py b/perf/bug397.py new file mode 100644 index 0000000..4d72e90 --- /dev/null +++ b/perf/bug397.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +""" +Run this file two ways under coverage and see that the times are the same: + + $ coverage run lab/bug397.py slow + Runtime per example: 130.96 +/- 3.70 us + $ coverage run lab/bug397.py fast + Runtime per example: 131.34 +/- 4.48 us + +Written by David MacIver as part of +https://bitbucket.org/ned/coveragepy/issues/397/stopping-and-resuming-coverage-with + +""" +from __future__ import print_function + +import sys +import random +import time +import math + +if sys.argv[1] == "slow": + sys.settrace(sys.gettrace()) + +random.seed(1) + + +def hash_str(s): + h = 0 + for c in s: + h = (h * 31 + ord(c)) & (2 ** 64 - 1) + return h + +data = [ + hex(random.getrandbits(1024)) for _ in range(500) +] + +N_SAMPLES = 100 + + +def mean(xs): + xs = list(xs) + return sum(xs) / len(xs) + + +def sd(xs): + return math.sqrt(mean(x ** 2 for x in xs) - mean(xs) ** 2) + + +if __name__ == '__main__': + timing = [] + for _ in range(N_SAMPLES): + start = time.time() + for d in data: + hash_str(d) + timing.append(1000000 * (time.time() - start) / len(data)) + print("Runtime per example:", "%.2f +/- %.2f us" % (mean(timing), sd(timing))) |