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);
}
}
}
}