summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-10-20 13:19:16 +0300
committerLars Wirzenius <liw@liw.fi>2018-10-20 13:19:16 +0300
commit937debdac841128097d46f007cadbedf86e21d0b (patch)
tree556f2229a7ce908ee884b08064361c83c2fb113f
parent5ee1bf1de16ad61ae117f27c638c06efba2cb8b9 (diff)
downloadmuck-poc-937debdac841128097d46f007cadbedf86e21d0b.tar.gz
Change: make checking optional, add profiling
The checking is ruining my benchmarks.
-rwxr-xr-xtest-persistence62
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)