testpathtree: Add dataitems() stress test
Change-Id: I7493a8d2d9df6123a3d80f17b2ba268608997066
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
diff --git a/obmc/utils/testpathtree.py b/obmc/utils/testpathtree.py
old mode 100755
new mode 100644
index 3c68edc..c145e47
--- a/obmc/utils/testpathtree.py
+++ b/obmc/utils/testpathtree.py
@@ -336,6 +336,20 @@
key = '/0/a'
"""
+def iter_stress(pt):
+ for i in pt.dataitems():
+ pass
+
+iter_setup = """\
+from __main__ import iter_stress
+from obmc.utils.pathtree import PathTree
+pt = PathTree()
+for i in ('/' + '/'.join([chr(ord('a') + x)] * {}) for x in range(0, 26)):
+ for j in range(0, {}):
+ k = "{}".format(i, j)
+ pt[k] = k
+"""
+
if __name__ == "__main__":
print("Depth tests:")
for depth in range(1, 11):
@@ -350,3 +364,12 @@
stmt = "width_stress(pt, key)"
time = timeit.timeit(stmt, setup=setup)
print("\t{}: {}".format(width, time))
+ print
+ print("Iteration tests:")
+ n = 1000
+ for depth in range(1, 5):
+ for width in range(1, 5):
+ setup = iter_setup.format(depth, width, "{}/{}")
+ stmt = "iter_stress(pt)"
+ time = timeit.timeit(stmt, setup=setup, number=n)
+ print("\tdepth={}, width={}, n={}: {}".format(depth, width, n, time))