this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 48 lines 1.7 kB view raw
1import random 2from atmst.all import MemoryBlockStore, NodeStore, NodeWrangler, mst_diff, very_slow_mst_diff 3from cbrrr import CID 4import time 5 6PERF_BENCH = False 7 8def random_test(): 9 bs = MemoryBlockStore() 10 ns = NodeStore(bs) 11 nw = NodeWrangler(ns) 12 root = ns.get_node(None).cid 13 keys = [] 14 for _ in range(10240 if PERF_BENCH else random.randrange(0, 32)): 15 k = random.randbytes(8).hex() 16 keys.append(k) 17 root = nw.put_record(root, k, CID.cidv1_dag_cbor_sha256_32_from(random.randbytes(8))) 18 root_a = root 19 for _ in range(8 if PERF_BENCH else random.randrange(0, 8)): 20 # some random additions 21 root = nw.put_record(root, random.randbytes(8).hex(), CID.cidv1_dag_cbor_sha256_32_from(random.randbytes(8))) 22 if keys: 23 # some random modifications 24 for _ in range(4 if PERF_BENCH else random.randrange(0, 4)): 25 for k in random.choice(keys): 26 root = nw.put_record(root, k, CID.cidv1_dag_cbor_sha256_32_from(random.randbytes(8))) 27 # some random deletions 28 for _ in range(4 if PERF_BENCH else random.randrange(0, 4)): 29 for k in random.choice(keys): 30 root = nw.del_record(root, k) 31 32 diff_start = time.time() 33 c, d = mst_diff(ns, root_a, root) 34 #c, d = very_slow_mst_diff(ns, root_a, root) 35 diff_duration = time.time()-diff_start 36 e, f = mst_diff(ns, root, root_a) 37 assert(c == f) # compare with reverse 38 assert(e == d) # compare with reverse 39 g, h = very_slow_mst_diff(ns, root_a, root) 40 assert(c == g) # compare with known-good 41 assert(d == h) # compare with known-good 42 return diff_duration 43 44if __name__ == "__main__": 45 duration = 0 46 for _ in range(1 if PERF_BENCH else 2000): 47 duration += random_test() 48 print("time spent diffing (ms):", duration*1000)