From 937debdac841128097d46f007cadbedf86e21d0b Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 20 Oct 2018 13:19:16 +0300 Subject: Change: make checking optional, add profiling The checking is ruining my benchmarks. --- test-persistence | 62 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/test-persistence b/test-persistence index 194cecb..17d9161 100755 --- a/test-persistence +++ b/test-persistence @@ -14,8 +14,10 @@ # along with this program. If not, see . +import cProfile import os import sys +import time import uuid @@ -58,22 +60,52 @@ def compare_dicts(d1, d2): return None -store_dir = sys.argv[1] -n = int(sys.argv[2]) +def main(): + store_dir = sys.argv[1] + n = int(sys.argv[2]) + check = sys.argv[4] == 'check' -if not os.path.exists(store_dir): - os.mkdir(store_dir) + if not os.path.exists(store_dir): + os.mkdir(store_dir) -st = muck.Store(store_dir) -for i, chg in enumerate(changes(n)): - st.change(chg) + started = time.time() + st = muck.Store(store_dir) + elapsed = time.time() - started + sys.stdout.write('Store load time: {:.1f} s\n'.format(elapsed)) - st2 = muck.Store(store_dir) - ms = st.get_memory_store() - ms2 = st2.get_memory_store() - err = compare_dicts(ms.as_dict(), ms2.as_dict()) - if err: - sys.stderr.write('ERROR: {}: {}\n'.format(i+1, err)) - sys.exit(1) + started = time.time() + for i, chg in enumerate(changes(n)): + st.change(chg) -sys.stdout.write('OK\n') + if check: + st2 = muck.Store(store_dir) + ms = st.get_memory_store() + ms2 = st2.get_memory_store() + err = compare_dicts(ms.as_dict(), ms2.as_dict()) + if err: + sys.stderr.write('ERROR: {}: {}\n'.format(i+1, err)) + sys.exit(1) + + done = i + 1 + if (done % 1000) == 0: + now = time.time() + elapsed = now - started + speed = done / elapsed + remain = n - done + ts = time.strftime('%H:%M:%S', time.localtime(now)) + + sys.stdout.write( + '{} Made {} changes, {} remain, speed {:.1f}/s\n'.format( + ts, done, remain, speed)) + sys.stdout.flush() + + elapsed = time.time() - started + speed = done / elapsed + sys.stdout.write( + 'OK, created {} resources in {:.1f} s at {:.1f}/s\n'.format( + n, elapsed, speed)) + + +profile = sys.argv[3] + +cProfile.run('main()', filename=profile) -- cgit v1.2.1