blob: 390741e565c0ce7dfd77700a75f13840ed2cacd9 [file] [log] [blame]
#!/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://github.com/nedbat/coveragepy/issues/397
"""
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)))