public static void Main(string[] args) { var useCrypto = !(args.Length > 0 && args[0] == "0"); var benchMarks = new IBenchamrk[] { new MemoryBenchmark(), new ParallelMemoryBenchmark(), new RandomMemoryBenchmark(), new ParallelRandomMemoryBenchmark(), new Scimark2Benchmark(), new ParallelScimark2Benchmark(), new DhrystoneBenchmark(), new ParallelDhrystoneBenchmark(), new WhetstoneBenchmark(), new ParallelWhetstoneBenchmark(), new ArithemticsBenchmark(), new ParallelArithemticsBenchmark(), new MathBenchmark(), new ParallelMathBenchmark(), new CallBenchmark(), new IfElseBenchmark(), new StringManipulation(), new ParallelStringManipulation() }; GCSettings.LatencyMode = GCLatencyMode.LowLatency; if (useCrypto) { benchMarks = benchMarks.Concat(new IBenchamrk[] { new HashBenchmark(), new ParallelHashBenchmark() }).ToArray(); } TimeSpan total = TimeSpan.Zero; decimal totalPoints = 0; List <BenchResult> result = new List <BenchResult>(); writer.WriteHeader("Warmup"); foreach (var bench in benchMarks) { bench.Warmup(); writer.Write("."); } writer.WriteLine(); writer.WriteHeader("Bench"); int i = 1; foreach (var bench in benchMarks) { writer.WriteHeader($"[{i}] {bench.Name}"); var r = bench.Bench(); total += r.Elapsed; totalPoints += r.Points; WriteResult(r); result.Add(r); i++; } writer.WriteLine(); writer.WriteTitle("{0,-30}", $"Total:"); writer.WriteValue("{0,15} ms", string.Format("{0:F2}", total.TotalMilliseconds)); writer.WriteValue("{0,15} pts", string.Format("{0:F2}", totalPoints)); writer.WriteLine(); writer.WriteLine(); writer.WriteTitle($"{Environment.OSVersion};{Environment.Version};{Environment.ProcessorCount};{Environment.WorkingSet}"); result.ForEach(r => writer.WriteValue(string.Format(";{0:F2}", r.Points))); writer.WriteTitle($";{total}"); }
public static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; BenchmarkBase.IterrationsRatio = args.Length > 0 ? Convert.ToDouble(args[0]) : 1.0; #if DEBUG BenchmarkBase.IterrationsRatio = BenchmarkBase.IterrationsRatio * 0.1; #endif var useCrypto = !(args.Length > 1 && args[1] == "0"); var benchMarks = new IBenchamrk[] { /* new ArithemticsBenchmark(), * new ParallelArithemticsBenchmark(), * * new MathBenchmark(), * new ParallelMathBenchmark(), * * new CallBenchmark(), * new ParallelCallBenchmark(), * * new IfElseBenchmark(), * new ParallelIfElseBenchmark(), * * new StringManipulation(), * new ParallelStringManipulation(),*/ new MemoryBenchmark(true, writer), new ParallelMemoryBenchmark(true, writer), /* * new RandomMemoryBenchmark(true, writer), * new ParallelRandomMemoryBenchmark(true, writer), * * new Scimark2Benchmark(writer), * new ParallelScimark2Benchmark(writer), * * new DhrystoneBenchmark(writer), * new ParallelDhrystoneBenchmark(writer), * * new WhetstoneBenchmark(writer), * new ParallelWhetstoneBenchmark(writer), * * new LinpackBenchmark(writer), * new ParallelLinpackBenchmark(writer),*/ }; GCSettings.LatencyMode = GCLatencyMode.LowLatency; if (useCrypto) { benchMarks = benchMarks.Concat(new IBenchamrk[] { new HashBenchmark(writer), new ParallelHashBenchmark(writer) }).ToArray(); } TimeSpan singleThreadTotal = TimeSpan.Zero; TimeSpan total = TimeSpan.Zero; double singleThreadTotalPoints = 0; double totalPoints = 0; List <BenchResult> result = new List <BenchResult>(); writer.WriteHeader("Warmup"); foreach (var bench in benchMarks) { bench.Warmup(0.05); writer.Write("."); } writer.WriteLine(); writer.WriteHeader("Bench"); int i = 1; foreach (var bench in benchMarks) { writer.WriteHeader($"[{i}] {bench.Name}"); var r = bench.Bench(); if (!bench.IsParallel) { singleThreadTotal += r.Elapsed; singleThreadTotalPoints += r.Points; } total += r.Elapsed; totalPoints += r.Points; WriteResult(r); result.Add(r); i++; } writer.WriteLine(); writer.WriteTitle("{0,-30}", $"Total:"); writer.WriteValue("{0,15} ms", string.Format("{0:F2}", total.TotalMilliseconds)); writer.WriteValue("{0,15} pts", string.Format("{0:F2}", totalPoints)); writer.WriteLine(); var headerCommon = "Operating System,Runtime,Threads Count,Memory Used"; var headerTotals = ",Total Points,Total Time (ms)"; writer.WriteLine(); writer.WriteHeader("Single-thread results"); writer.WriteTitle(headerCommon); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteTitle($",{r.BenchmarkName}")); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle($"{Environment.OSVersion},{Environment.Version},{Environment.ProcessorCount},{Environment.WorkingSet}"); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Points))); writer.WriteTitle($",{string.Format("{0:F2}", totalPoints)},{string.Format("{0:F2}", total.TotalMilliseconds)}"); writer.WriteLine(); writer.WriteHeader("All results"); writer.WriteTitle(headerCommon); result.ToList().ForEach(r => writer.WriteTitle($",{r.BenchmarkName}")); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle($"{Environment.OSVersion};{Environment.Version};{Environment.ProcessorCount},{Environment.WorkingSet}"); result.ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Points))); writer.WriteTitle($",{string.Format("{0:F2}", totalPoints)},{string.Format("{0:F2}", total.TotalMilliseconds)}"); writer.WriteLine(); writer.WriteHeader("Single-thread Units results"); writer.WriteTitle(headerCommon); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteTitle($",{r.BenchmarkName}")); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle($"{Environment.OSVersion},{Environment.Version};{Environment.ProcessorCount},{Environment.WorkingSet}"); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Result))); writer.WriteTitle($",{string.Format("{0:F2}", totalPoints)},{string.Format("{0:F2}", total.TotalMilliseconds)}"); writer.WriteLine(); writer.WriteHeader("Units results"); writer.WriteTitle(headerCommon); result.ToList().ForEach(r => writer.WriteTitle($",{r.BenchmarkName}")); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle($"{Environment.OSVersion},{Environment.Version},{Environment.ProcessorCount},{Environment.WorkingSet}"); result.ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Result))); writer.WriteTitle($",{string.Format("{0:F2}", totalPoints)},{string.Format("{0:F2}", total.TotalMilliseconds)}"); }
private void menuItem1_Click(object sender, EventArgs e) { var benchMarks = new IBenchamrk[] { new ArithemticsBenchmark(writer), new MathBenchmark(writer), new CallBenchmark(writer), new IfElseBenchmark(writer), new StringManipulation(writer), new MemoryBenchmark(true, writer), new RandomMemoryBenchmark(true, writer), new Scimark2Benchmark(writer), new DhrystoneBenchmark(writer), new WhetstoneBenchmark(writer), new LinpackBenchmark(writer), new HashBenchmark(writer), }; TimeSpan singleThreadTotal = TimeSpan.Zero; TimeSpan total = TimeSpan.Zero; double singleThreadTotalPoints = 0; double totalPoints = 0; List <BenchResult> result = new List <BenchResult>(); writer.WriteHeader("Warmup"); foreach (var bench in benchMarks) { bench.Warmup(0.05); writer.Write("."); } writer.WriteLine(); writer.WriteHeader("Bench"); int i = 1; foreach (var bench in benchMarks) { writer.WriteHeader("[{0}] {1}", i, bench.Name); var r = bench.Bench(); if (!bench.IsParallel) { singleThreadTotal += r.Elapsed; singleThreadTotalPoints += r.Points; } total += r.Elapsed; totalPoints += r.Points; WriteResult(r); result.Add(r); i++; } writer.WriteLine(); writer.WriteTitle("{0,-30}", "Total:"); writer.WriteValue("{0,15} ms", string.Format("{0:F2}", total.TotalMilliseconds)); writer.WriteValue("{0,15} pts", string.Format("{0:F2}", totalPoints)); writer.WriteLine(); var headerCommon = "Operating System,Runtime,Threads Count,Memory Used"; var headerTotals = ",Total Points,Total Time (ms)"; int processors = 1; long workingSet = 0; writer.WriteLine(); writer.WriteHeader("Single-thread results"); writer.WriteTitle(headerCommon); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteTitle(",{0}", r.BenchmarkName)); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle("{0},{1},{2},{3}", Environment.OSVersion, Environment.Version, processors, workingSet); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Points))); writer.WriteTitle(",{0},{1}", string.Format("{0:F2}", totalPoints), string.Format("{0:F2}", total.TotalMilliseconds)); writer.WriteLine(); writer.WriteHeader("Single-thread Units results"); writer.WriteTitle(headerCommon); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteTitle(",{0}", r.BenchmarkName)); writer.WriteTitle(headerTotals); writer.WriteLine(); writer.WriteTitle("{0},{1},{2},{3}", Environment.OSVersion, Environment.Version, processors, workingSet); result.Where(r => !r.IsParallel).ToList().ForEach(r => writer.WriteValue(string.Format(",{0:F2}", r.Result))); writer.WriteTitle(",{0},{1}", string.Format("{0:F2}", totalPoints), string.Format("{0:F2}", total.TotalMilliseconds)); }