package org.ahmadsoft.recursion; import java.io.PrintStream; import java.util.ArrayList; import java.util.LinkedList; import java.util.Random; import java.util.Stack; /** * Test program to quantify recursive performance on Java. * @author aahmad */ public class RecursionTester { /** * @param args */ public static void main(String[] args) { PrintStream out = System.out; out.println("Recursion Tester v1.0"); out.println(System.getProperty("java.runtime.name")); out.println(System.getProperty("java.runtime.version")); // Create 1,000,000 node tree with a branch // factor of 5. int branchFactor = 5; out.print("creating tree with branch factor " + branchFactor + "..."); long ts = System.nanoTime(); Random random = new Random(System.currentTimeMillis()); TreeNode root = new TreeNode(null, random.nextInt(5)); int created = 1; LinkedList toProcess = new LinkedList(); toProcess.add(root); while (created < 100000) { TreeNode node = (TreeNode) toProcess.removeFirst(); for (int j=0; j