/mobile Handheld Friendly website
x64 Ubuntu : Intel® Q6600® quad-core |
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 |
|---|---|---|---|---|---|
| 12 | 0.28 | 0.21 | 584 | 650 | 19% 18% 23% 90% |
| 16 | 4.83 | 2.78 | 35,220 | 650 | 24% 83% 42% 25% |
| 20 | 93.38 | 55.97 | 472,228 | 650 | 23% 23% 56% 66% |
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.
Mono JIT compiler version 3.0.3 (tarball Tue Feb 12 21:22:20 PST 2013)
LLVM: yes(3.2svn-mono)
/* The Computer Language Benchmarks Game http://benchmarksgame.alioth.debian.org/ contributed by Marek Safar */ 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()); } struct TreeNode { class Next { public TreeNode left, right; } private Next next; private int item; TreeNode(int item){ this.item = item; this.next = null; } internal 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.next = new Next (); this.next.left = left; this.next.right = right; this.item = item; } internal int itemCheck(){ // if necessary deallocate here if (next==null) return item; else return item + next.left.itemCheck() - next.right.itemCheck(); } } }
Wed, 13 Feb 2013 06:23:38 GMT MAKE: mv binarytrees.csharp-2.csharp binarytrees.csharp-2.cs /usr/local/bin/mcs -optimize+ -platform:x64 -out:binarytrees.csharp-2.csharp_run binarytrees.csharp-2.cs rm binarytrees.csharp-2.cs 0.24s to complete and log all make actions COMMAND LINE: /usr/local/bin/mono --llvm binarytrees.csharp-2.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 <premain>: CommandLine Error: Argument 'misched' defined more than once! <premain>: CommandLine Error: Argument 'print-machineinstrs' defined more than once! -simplifycfg: CommandLine Error: Argument 'misched' defined more than once! -simplifycfg: CommandLine Error: Argument 'print-machineinstrs' defined more than once!