summaryrefslogtreecommitdiff
path: root/lab/gendata.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-08-05 21:40:40 -0400
committerNed Batchelder <ned@nedbatchelder.com>2018-08-05 21:40:40 -0400
commitb147ea9dafe38e08083842f89502fefd9ba790d7 (patch)
tree1e1c91c5285143d45d9e60b52f8c48b58c521186 /lab/gendata.py
parentf1561b04f58fdd04b86d2ed0dc858a1222752b02 (diff)
downloadpython-coveragepy-git-b147ea9dafe38e08083842f89502fefd9ba790d7.tar.gz
Simple tool to compare json and sql storage
Diffstat (limited to 'lab/gendata.py')
-rw-r--r--lab/gendata.py40
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")