gambas-source-code/benchmark/btree.gbs
Benoît Minisini de200aac4c Add a new 'btree' benchmark, that does a lot of object creation and recursive function calls.
[BENCHMARKS]
* NEW: Add a new 'btree' benchmark, that does a lot of object creation and recursive function calls.
* NEW: Rename the 'string' benchmark as 'string1', to avoid name clashes in Python.
* BUG: Fix the HTML table generation.
2023-10-04 22:10:01 +02:00

69 lines
1.2 KiB
Text
Executable file

#!/usr/bin/env gbs3
Class TreeNode
Public Left As TreeNode
Public Right As TreeNode
Static Public Sub Create(D As Integer) As TreeNode
Return ChildTreeNodes(D)
End
Static Public Sub ChildTreeNodes(D As Integer) As TreeNode
Dim hNode As TreeNode = new TreeNode
If D > 0 Then
hNode.Left = ChildTreeNodes(D - 1)
hNode.Right = ChildTreeNodes(D - 1)
Endif
Return hNode
End
Public Sub Check() As Integer
If Not Left Then Return 1
Return Left.Check() + Right.Check() + 1
End
End Class
Dim iMinDepth As Integer = 4
Dim iMaxDepth As Integer = 16
Dim iStretchDepth As Integer = iMaxDepth + 1
Dim iCheck As Integer
Dim hTree As TreeNode
Dim D, I As Integer
Dim iIterations As Integer
iCheck = TreeNode.Create(iStretchDepth).Check()
Print "stretch tree of depth "; iMaxDepth + 1; "\t check: "; iCheck
hTree = TreeNode.Create(iMaxDepth)
For D = iMinDepth To iMaxDepth Step 2
iCheck = 0
iIterations = Shl(1, iMaxDepth - D + iMinDepth)
For I = 1 To iIterations
iCheck += TreeNode.Create(D).Check()
Next
Print iIterations;"\t trees of depth "; D; "\t check: ";iCheck
Next
Print "long lived tree of depth "; iMaxDepth; "\t check: "; hTree.Check()
Error CStr(Jit.Time)