summaryrefslogtreecommitdiff
path: root/lab/gendata.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-08-24 07:13:42 -0400
committerNed Batchelder <ned@nedbatchelder.com>2018-08-24 07:13:42 -0400
commitc4b2392dd51b7f976972afb00f01d4618c523cff (patch)
tree7c77b420d4eec7ac628393663c67c0e9bc2c66f7 /lab/gendata.py
parent8a337f91e6444c027771741a56636a56389706e3 (diff)
parentdd5b0cc88ebe4528abaa7cdf0b3fd516fb1f7e01 (diff)
downloadpython-coveragepy-git-c4b2392dd51b7f976972afb00f01d4618c523cff.tar.gz
Merge branch 'nedbat/data-sqlite'
Diffstat (limited to 'lab/gendata.py')
-rw-r--r--lab/gendata.py42
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))