Пример #1
0
        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}");
        }
Пример #2
0
        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)}");
        }
Пример #3
0
        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));
        }