internal static void Run(ClrAnalyzer.Core.Dumps.CompiledMethodInfo <TailCallSample> iPCmi)
 {
     iPCmi.SetUp();
     FactorialWithoutTailing(1);
     //iPCmi.SetUp();
     //FactorialWithTailing(0, 1);
     iPCmi.SetUp();
     FactorialWithTailing(1);
 }
        internal static void Run(ClrAnalyzer.Core.Dumps.CompiledMethodInfo <InliningSample> iPCmi)
        {
            const int max   = 100000000;
            int       temp1 = 0;
            int       temp2 = 0;

            iPCmi.SetUp();
            A1(new IntParam {
                Val = 0
            });
            //iPCmi.SetUp();
            //C1(new sIntParam { Val = 0 });
            iPCmi.SetUp();
            B1(new sIntParam {
                Val = 0
            });

            var s1 = Stopwatch.StartNew();

            for (int i = 0; i < max; i++)
            {
                temp1 = A1(new IntParam {
                    Val = i
                });
            }
            s1.Stop();
            var s2 = Stopwatch.StartNew();

            for (int i = 0; i < max; i++)
            {
                temp2 = B1(new sIntParam {
                    Val = i
                });
            }
            s2.Stop();
            Console.WriteLine(s1.Elapsed.TotalMilliseconds * 1000 * 1000 / (double)max);
            Console.WriteLine(s2.Elapsed.TotalMilliseconds * 1000 * 1000 / (double)max);
            Console.WriteLine("{0} {1}", temp1, temp2);
            Console.Read();
        }