public static void Main()

in ClearScriptBenchmarks/ClearScriptBenchmarks.Unix.cs [19:114]


        public static void Main(string[] args)
        {
            uint choice = 0;
            var burn = (args.Length == 2) && (args[0] == "-b") && uint.TryParse(args[1], out choice) && (choice >= 1) && (choice <= 2);

            Console.Clear();
            if (!burn) Console.WriteLine("ClearScript Benchmarks ({0}, {1}, {2} {3})\n", RuntimeInformation.FrameworkDescription, RuntimeInformation.OSDescription, RuntimeInformation.ProcessArchitecture, flavor);

            var count = 0UL;

            while (true)
            {
                if (!burn)
                {
                    Console.WriteLine("1. SunSpider - V8 (default)");
                    Console.WriteLine("2. SunSpider - V8 (no GlobalMembers support)");
                    Console.WriteLine("3. Exit");
                    Console.WriteLine();
                }

                var exit = false;

                while (true)
                {
                    uint selection;
                    if (burn)
                    {
                        selection = choice;
                    }
                    else
                    {
                        Console.Write("-> ");
                        var input = Console.ReadLine();

                        if (!uint.TryParse(input, out selection))
                        {
                            Console.WriteLine("Invalid selection");
                            continue;
                        }
                    }

                    var done = false;

                    switch (selection)
                    {
                        case 1:
                            Run(() => new V8ScriptEngine(), SunSpider.RunSuite, burn);
                            done = true;
                            break;

                        case 2:
                            Run(() => new V8ScriptEngine(V8ScriptEngineFlags.DisableGlobalMembers), SunSpider.RunSuite, burn);
                            done = true;
                            break;

                        case 3:
                            done = true;
                            exit = true;
                            break;

                        default:
                            Console.WriteLine("Invalid selection");
                            break;
                    }

                    if (done)
                    {
                        if (!burn) Console.WriteLine();
                        count += 1;
                        break;
                    }
                }

                if (exit)
                {
                    break;
                }

                if (burn)
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();

                    GC.Collect();
                    GC.WaitForPendingFinalizers();

                    GC.Collect();
                    GC.WaitForPendingFinalizers();

                    using (var process = Process.GetCurrentProcess())
                    {
                        Console.WriteLine("{0:#,#} after {1:#,#} iterations", process.WorkingSet64, count);
                    }
                }
            }
        }