diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-10-20 13:19:16 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-10-20 13:19:16 +0300 |
commit | 937debdac841128097d46f007cadbedf86e21d0b (patch) | |
tree | 556f2229a7ce908ee884b08064361c83c2fb113f | |
parent | 5ee1bf1de16ad61ae117f27c638c06efba2cb8b9 (diff) | |
download | muck-poc-937debdac841128097d46f007cadbedf86e21d0b.tar.gz |
Change: make checking optional, add profiling
The checking is ruining my benchmarks.
-rwxr-xr-x | test-persistence | 62 |
1 files 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 <http://www.gnu.org/licenses/>. +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) |