/mobile Handheld Friendly website

 performance measurements

Each table row shows performance measurements for this Java program with a particular command-line input value N.

 N  CPU secs Elapsed secs Memory KB Code B ≈ CPU Load
120.210.21248607  0% 18% 0% 100%
160.930.9355,100607  2% 0% 0% 99%
20247.49247.66134,348607  1% 1% 0% 100%

Read the ↓ make, command line, and program output logs to see how this program was run.

Read binary-trees-redux benchmark to see what this program should do.

 notes

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Server VM (build 25.0-b70, mixed mode)

 binary-trees-redux Java #2 program source code

/* The Computer Language Benchmarks Game
   http://benchmarksgame.alioth.debian.org/
 
   contributed by Jarkko Miettinen
*/

public class binarytreesredux {

   private final static int minDepth = 4;
   
   public static void main(String[] args){
      int n = 0;
      if (args.length > 0) n = Integer.parseInt(args[0]);
      
      int maxDepth = (minDepth + 2 > n) ? minDepth + 2 : n;
      int stretchDepth = maxDepth + 1;
      
      int check = (TreeNode.bottomUpTree(0,stretchDepth)).itemCheck();
      System.out.println("stretch tree of depth "+stretchDepth+"\t check: " + check);
      
      TreeNode longLivedTree = TreeNode.bottomUpTree(0,maxDepth);
      
      for (int depth=minDepth; depth<=maxDepth; depth+=2){
         int iterations = 1 << (maxDepth - depth + minDepth);
         check = 0;
         
         for (int i=1; i<=iterations; i++){
            check += (TreeNode.bottomUpTree(i,depth)).itemCheck();
            check += (TreeNode.bottomUpTree(-i,depth)).itemCheck();
         }
         System.out.println((iterations*2) + "\t trees of depth " + depth + "\t check: " + check);
      }   
      System.out.println("long lived tree of depth " + maxDepth + "\t check: "+ longLivedTree.itemCheck());
   }
   
   
   private static class TreeNode
   {
      private TreeNode left, right;
      private int item;
      
      TreeNode(int item){
         this.item = item;
      }
      
      private static TreeNode bottomUpTree(int item, int depth){
         if (depth>0){
            return new TreeNode(
                  bottomUpTree(2*item-1, depth-1)
                  , bottomUpTree(2*item, depth-1)
                  , item
            );
         }
         else {
            return new TreeNode(item);
         }
      }
      
      TreeNode(TreeNode left, TreeNode right, int item){
         this.left = left;
         this.right = right;
         this.item = item;
      }
      
      private int itemCheck(){
         // if necessary deallocate here
         if (left==null) return item;
         else return item + left.itemCheck() - right.itemCheck();
      }
   }
}

 make, command-line, and program output logs

Tue, 18 Mar 2014 23:38:21 GMT

MAKE:
mv binarytreesredux.java-2.java binarytreesredux.java
/usr/local/src/jdk1.8.0/bin/javac binarytreesredux.java
0.76s to complete and log all make actions

COMMAND LINE:
/usr/local/src/jdk1.8.0/bin/java -Xms112m -Xmx112m -server -XX:+TieredCompilation -XX:+AggressiveOpts binarytreesredux 20

PROGRAM OUTPUT:
stretch tree of depth 21	 check: -1
2097152	 trees of depth 4	 check: -2097152
524288	 trees of depth 6	 check: -524288
131072	 trees of depth 8	 check: -131072
32768	 trees of depth 10	 check: -32768
8192	 trees of depth 12	 check: -8192
2048	 trees of depth 14	 check: -2048
512	 trees of depth 16	 check: -512
128	 trees of depth 18	 check: -128
32	 trees of depth 20	 check: -32
long lived tree of depth 20	 check: -1

Revised BSD license

  Home   Conclusions   License   Play