diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-05 21:40:40 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-05 21:40:40 -0400 |
commit | b147ea9dafe38e08083842f89502fefd9ba790d7 (patch) | |
tree | 1e1c91c5285143d45d9e60b52f8c48b58c521186 /lab/gendata.py | |
parent | f1561b04f58fdd04b86d2ed0dc858a1222752b02 (diff) | |
download | python-coveragepy-git-b147ea9dafe38e08083842f89502fefd9ba790d7.tar.gz |
Simple tool to compare json and sql storage
Diffstat (limited to 'lab/gendata.py')
-rw-r--r-- | lab/gendata.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lab/gendata.py b/lab/gendata.py new file mode 100644 index 00000000..0e9c6b6f --- /dev/null +++ b/lab/gendata.py @@ -0,0 +1,40 @@ +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 = f"/src/foo/project/file{i}.py" + 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(f"Overhead: {overhead:.3f}s") +print(f"JSON: {jtime:.3f}s") +print(f"SQLite: {stime:.3f}s") +print(f"{stime / jtime:.3f}x slower") |