gambas-source-code/benchmark/btree.py

45 lines
1 KiB
Python
Raw Normal View History

#!/usr/bin/python
import sys
class TreeNode:
left = None
right = None
def check(self):
if self.left == None:
return 1
return self.left.check() + self.right.check() + 1
def CreateTreeNode(depth):
return ChildTreeNodes(depth)
def ChildTreeNodes(depth):
node = TreeNode()
if depth > 0:
node.left = ChildTreeNodes(depth - 1)
node.right = ChildTreeNodes(depth - 1)
return node
min_depth = 4
max_depth = 16
stretch_depth = max_depth + 1
print("stretch tree of depth %d\t check:" %
stretch_depth, CreateTreeNode(stretch_depth).check())
long_lived_tree = CreateTreeNode(max_depth)
for depth in range(min_depth, stretch_depth, 2):
check = 0
iterations = 2**(max_depth - depth + min_depth)
for i in range(1, iterations + 1):
check += CreateTreeNode(depth).check()
print("%d\t trees of depth %d\t check:" % (iterations, depth), check)
print("long lived tree of depth %d\t check:" %
max_depth, long_lived_tree.check())