Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            var types = typeof(Program)
                        .Assembly
                        .GetExportedTypes()
                        .Where(r => r != typeof(Program) && r.IsPublic)
                        .OrderBy(r => r.Name);

            var job    = Job.Default;
            var config = new ManualConfig();

            config.AddLogger(DefaultConfig.Instance.GetLoggers().ToArray());
            config.AddExporter(DefaultConfig.Instance.GetExporters().ToArray());
            config.AddColumnProvider(DefaultConfig.Instance.GetColumnProviders().ToArray());
            config.AddValidator(JitOptimizationsValidator.DontFailOnError);
            //config.AddJob(job.WithRuntime(ClrRuntime.Net461));
            //config.AddJob(job.WithRuntime(CoreRuntime.Core21));
            //config.AddJob(job.WithRuntime(CoreRuntime.Core31));
            config.AddJob(job.WithRuntime(CoreRuntime.Core50));
            config.AddDiagnoser(MemoryDiagnoser.Default);
            config.AddColumn(StatisticColumn.OperationsPerSecond);
            config.AddColumn(RankColumn.Arabic);

            var switcher = new BenchmarkSwitcher(types.ToArray());

            switcher.Run(args, config);
        }
Ejemplo n.º 2
0
        // No exporter, less verbose logger.
        public static IConfig GetCustomConfig(string artifactsPath, bool shortRunJob)
        {
            var defaultConfig = DefaultConfig.Instance;

            var config = new ManualConfig();

            config.AddAnalyser(defaultConfig.GetAnalysers().ToArray());
            config.AddColumnProvider(defaultConfig.GetColumnProviders().ToArray());
            config.AddDiagnoser(defaultConfig.GetDiagnosers().ToArray());
            //config.AddExporter(defaultConfig.GetExporters().ToArray());
            config.AddFilter(defaultConfig.GetFilters().ToArray());
            config.AddHardwareCounters(defaultConfig.GetHardwareCounters().ToArray());
            //config.AddJob(defaultConfig.GetJobs().ToArray());
            config.AddLogicalGroupRules(defaultConfig.GetLogicalGroupRules().ToArray());
            //config.AddLogger(defaultConfig.GetLoggers().ToArray());
            config.AddValidator(defaultConfig.GetValidators().ToArray());

            config.UnionRule = ConfigUnionRule.AlwaysUseGlobal;

            if (shortRunJob)
            {
                config.AddJob(Job.ShortRun);
            }

            config.ArtifactsPath = artifactsPath;

            config.AddLogger(new ConsoleLogger_());

            return(config);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Compares C# patterscan implementations.
        /// Uses a memory dump from main module of blender 2.64a 64bit as a target.
        /// </summary>
        /// <remarks>https://download.blender.org/release/Blender2.64/blender-2.64a-release-windows64.zip</remarks>
        internal static void Main(string[] args)
        {
            Console.Title           = "Patternscan Benchmark";
            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine(@"    ____        __  __                ");
            Console.WriteLine(@"   / __ \____ _/ /_/ /____  _________ ");
            Console.WriteLine(@"  / /_/ / __ `/ __/ __/ _ \/ ___/ __ \");
            Console.WriteLine(@" / ____/ /_/ / /_/ /_/  __/ /  / / / /");
            Console.WriteLine(@"/_/    \__,_/\__/\__/\___/_/  /_/ /_/ ");
            Console.WriteLine(@"                                      ");
            Console.WriteLine("            scan benchmark");
            Console.WriteLine("            - C# version -");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Gray;

            PrintInfo("11 patterns | 10 iterations | 13 implementations");
            Console.Write("To start press ENTER...");
            Console.ReadLine();
            Console.Write("Running ");

            if (IntPtr.Size != 8)
            {
                throw new PlatformNotSupportedException("Supports x64 only");
            }

            Spinner spinner = new();

            spinner.Start();

            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;

            var config = new ManualConfig();

            config.
            AddColumnProvider().
            AddExporter().
            AddDiagnoser().
            AddAnalyser().
            AddJob().
            AddValidator().
            AddLogger(NullLogger.Instance).
            WithOption(ConfigOptions.JoinSummary | ConfigOptions.DisableLogFile | ConfigOptions.StopOnFirstError, true).
            UnionRule = ConfigUnionRule.AlwaysUseGlobal;
            Summary summary = BenchmarkRunner.Run <Benchmark>(config);
            var     ranking = summary.Reports.Where(x => x.Success).OrderBy(x => x.ResultStatistics.Mean);

            spinner.Stop();
            Console.SetCursorPosition(Console.CursorLeft - 8, Console.CursorTop);
            Console.WriteLine("         ");

            foreach (BenchmarkReport report in ranking)
            {
                PrintResult(report);
            }

            Console.WriteLine("");
            Console.WriteLine("finished...");
            Console.SetCursorPosition(0, 0);
            Console.ReadLine();
        }
Ejemplo n.º 4
0
        public static void Main(string[] args)
        {
            var config = new ManualConfig();

            config.AddExporter(DefaultConfig.Instance.GetExporters().ToArray());
            config.AddLogger(DefaultConfig.Instance.GetLoggers().ToArray());
            config.AddColumnProvider(DefaultConfig.Instance.GetColumnProviders().ToArray());
            config.AddColumn(new ThroughputColumn("MBps"));

            BenchmarkRunner.Run <MurMur3Benchmark>(config);
        }
Ejemplo n.º 5
0
        public static ManualConfig GetManualConfigDefault()
        {
            ManualConfig config = ManualConfig.CreateEmpty();

            //https://benchmarkdotnet.org/articles/configs/diagnosers.html
            config.AddDiagnoser(MemoryDiagnoser.Default);
            config.WithArtifactsPath(ArtifactsPath);
            config.AddExporter(DefaultExporters.Html);
            config.AddLogger(ConsoleLogger.Default);
            config.AddColumnProvider(DefaultColumnProviders.Instance);
            return(config);
        }
Ejemplo n.º 6
0
    static bool Run()
    {
        bool success = false;

        try
        {
            // NOTE: this is mostly working around bugs in BenchmarkDotNet configuration
            var logger     = new Logger();
            var baseConfig = new DebugInProcessConfig();

            var config = new ManualConfig();

            foreach (var e in baseConfig.GetExporters())
            {
                config.AddExporter(e);
            }
            foreach (var d in baseConfig.GetDiagnosers())
            {
                config.AddDiagnoser(d);
            }
            foreach (var a in baseConfig.GetAnalysers())
            {
                config.AddAnalyser(a);
            }
            foreach (var v in baseConfig.GetValidators())
            {
                config.AddValidator(v);
            }
            foreach (var p in baseConfig.GetColumnProviders())
            {
                config.AddColumnProvider(p);
            }
            config.AddJob(JobMode <Job> .Default.WithToolchain(new InProcessEmitToolchain(TimeSpan.FromMinutes(10), logOutput: true)));
            config.UnionRule = ConfigUnionRule.AlwaysUseGlobal;             // Overriding the default
            config.AddLogger(logger);

            // ImageBenchmark class is hardcoded here for now
            BenchmarkRunner.Run <ImageBenchmark>(config.WithOptions(ConfigOptions.DisableLogFile));
            BenchmarkRunner.Run <ViewHandlerBenchmark>(config.WithOptions(ConfigOptions.DisableLogFile));

            success = true;
        }
        catch (Exception ex)
        {
            Log.Error(Tag, $"Error: {ex}");
        }
        return(success);
    }