diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-24 07:13:42 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-24 07:13:42 -0400 |
commit | c4b2392dd51b7f976972afb00f01d4618c523cff (patch) | |
tree | 7c77b420d4eec7ac628393663c67c0e9bc2c66f7 /lab/gendata.py | |
parent | 8a337f91e6444c027771741a56636a56389706e3 (diff) | |
parent | dd5b0cc88ebe4528abaa7cdf0b3fd516fb1f7e01 (diff) | |
download | python-coveragepy-git-c4b2392dd51b7f976972afb00f01d4618c523cff.tar.gz |
Merge branch 'nedbat/data-sqlite'
Diffstat (limited to 'lab/gendata.py')
-rw-r--r-- | lab/gendata.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lab/gendata.py b/lab/gendata.py new file mode 100644 index 00000000..27ad4fda --- /dev/null +++ b/lab/gendata.py @@ -0,0 +1,42 @@ +# Run some timing tests of JsonData vs SqliteData. + +import random +import time + +from coverage.data import CoverageJsonData +from coverage.sqldata import CoverageSqliteData + +NUM_FILES = 1000 +NUM_LINES = 1000 + +def gen_data(cdata): + rnd = random.Random() + rnd.seed(17) + + def linenos(num_lines, prob): + return (n for n in range(num_lines) if random.random() < prob) + + start = time.time() + for i in range(NUM_FILES): + filename = "/src/foo/project/file{i}.py".format(i=i) + line_data = { filename: dict.fromkeys(linenos(NUM_LINES, .6)) } + cdata.add_lines(line_data) + + cdata.write() + end = time.time() + delta = end - start + return delta + +class DummyData: + def add_lines(self, line_data): + return + def write(self): + return + +overhead = gen_data(DummyData()) +jtime = gen_data(CoverageJsonData("gendata.json")) - overhead +stime = gen_data(CoverageSqliteData("gendata.db")) - overhead +print("Overhead: {overhead:.3f}s".format(overhead=overhead)) +print("JSON: {jtime:.3f}s".format(jtime=jtime)) +print("SQLite: {stime:.3f}s".format(stime=stime)) +print("{slower:.3f}x slower".format(slower=stime/jtime)) |