performance measurements

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

 N  CPU secs Elapsed secs Memory KB Code B ≈ CPU Load
120.120.14?654  0% 0% 20% 80%
160.620.6224,352654  3% 95% 2% 5%
2020.4220.42135,020654  68% 1% 31% 2%

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

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

 notes

Mono JIT compiler version 3.4.1 (master/1b936ba Mon Apr 28 16:16:26 PDT 2014)
LLVM: yes(3.4svn-mono-mono/e656cac)
GC: sgen

 binary-trees C# Mono program source code

/*
      The Computer Language Benchmarks Game
      http://benchmarksgame.alioth.debian.org/ 

      contributed by Marek Safar  
      optimized by kasthack
*/
using System;

class BinaryTrees {
   const int minDepth = 4;
   public static void Main( String[] args ) {
      int n = 0;
      if ( args.Length > 0 ) n = Int32.Parse(args[0]);
      int maxDepth = Math.Max(minDepth + 2, n);
      int stretchDepth = maxDepth + 1;
      int check = ( TreeNode.bottomUpTree(0, stretchDepth) ).itemCheck();
      Console.WriteLine("stretch tree of depth {0}\t check: {1}", stretchDepth, 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();
         }
         Console.WriteLine("{0}\t trees of depth {1}\t check: {2}",
             iterations * 2, depth, check);
      }
      Console.WriteLine("long lived tree of depth {0}\t check: {1}",
          maxDepth, longLivedTree.itemCheck());
   }

   class TreeNode {
      private TreeNode left, right;
      private int item;
      TreeNode( int item ) {
         this.item = item;
      }
      internal static TreeNode bottomUpTree( int item, int depth ) {
         TreeNode t;
         ChildTreeNodes(out t, item, depth - 1);
         return t;
      }
      static void ChildTreeNodes( out TreeNode node, int item, int depth ) {
         node = new TreeNode(item);
         if ( depth > 0 ) {
            ChildTreeNodes(out node.left, 2 * item - 1, depth - 1);
            ChildTreeNodes(out node.right, 2 * item, depth - 1);
         }
      }
      internal int itemCheck() {
         if ( right == null ) return item;
         else return item + left.itemCheck() - right.itemCheck();
      }
   }
}

 make, command-line, and program output logs

Tue, 29 Apr 2014 01:21:12 GMT

MAKE:
mv binarytrees.csharp binarytrees.cs
/usr/local/bin/mcs  -optimize+ -platform:x86 -out:binarytrees.csharp_run binarytrees.cs
rm binarytrees.cs
0.22s to complete and log all make actions

COMMAND LINE:
/usr/local/bin/mono --llvm binarytrees.csharp_run 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