Пример #1
0
        private IEnumerable <Summary> RunBenchmarks(string[] args, IConfig config)
        {
            var globalChronometer = Chronometer.Start();
            var summaries         = new List <Summary>();

            if (ShouldDisplayOptions(args))
            {
                DisplayOptions();
                return(Enumerable.Empty <Summary>());
            }

            var  effectiveConfig = ManualConfig.Union(config ?? DefaultConfig.Instance, ManualConfig.Parse(args));
            bool join            = args.Any(arg => arg.EqualsWithIgnoreCase("--join"));

            var benchmarks = typeParser.MatchingTypesWithMethods(args)
                             .Select(typeWithMethods =>
                                     typeWithMethods.AllMethodsInType
                        ? BenchmarkConverter.TypeToBenchmarks(typeWithMethods.Type, effectiveConfig)
                        : BenchmarkConverter.MethodsToBenchmarks(typeWithMethods.Type, typeWithMethods.Methods, effectiveConfig))
                             .ToArray();

            summaries.AddRange(BenchmarkRunner.Run(benchmarks, effectiveConfig, summaryPerType: !join));

            var clockSpan = globalChronometer.GetElapsed();

            BenchmarkRunner.LogTotalTime(logger, clockSpan.GetTimeSpan(), "Global total time");
            return(summaries);
        }
Пример #2
0
 internal BenchmarkRunInfo[] Filter(IConfig effectiveConfig)
 => (effectiveConfig.GetFilters().Any() ? typeParser.GetAll() : typeParser.AskUser())     // if user provided some filters via args or custom config , we don't ask for any input
 .Select(typeWithMethods =>
         typeWithMethods.AllMethodsInType
                 ? BenchmarkConverter.TypeToBenchmarks(typeWithMethods.Type, effectiveConfig)
                 : BenchmarkConverter.MethodsToBenchmarks(typeWithMethods.Type, typeWithMethods.Methods, effectiveConfig))
 .ToArray();
Пример #3
0
        private IEnumerable <Summary> RunBenchmarks(string[] args, IConfig config)
        {
            var globalChronometer = Chronometer.Start();
            var summaries         = new List <Summary>();

            if (ShouldDisplayOptions(args))
            {
                DisplayOptions();
                return(Enumerable.Empty <Summary>());
            }

            var  effectiveConfig = ManualConfig.Union(config ?? DefaultConfig.Instance, ManualConfig.Parse(args));
            bool join            = args.Any(arg => arg.EqualsWithIgnoreCase("--join"));

            if (join)
            {
                var typesWithMethods = typeParser.MatchingTypesWithMethods(args);
                var benchmarks       = typesWithMethods.SelectMany(typeWithMethods =>
                                                                   typeWithMethods.AllMethodsInType
                        ? BenchmarkConverter.TypeToBenchmarks(typeWithMethods.Type, effectiveConfig)
                        : BenchmarkConverter.MethodsToBenchmarks(typeWithMethods.Type, typeWithMethods.Methods, effectiveConfig)).ToArray();
                summaries.Add(BenchmarkRunner.Run(benchmarks, effectiveConfig));
            }
            else
            {
                foreach (var typeWithMethods in typeParser.MatchingTypesWithMethods(args))
                {
                    logger.WriteLineHeader("Target type: " + typeWithMethods.Type.Name);
                    if (typeWithMethods.AllMethodsInType)
                    {
                        summaries.Add(BenchmarkRunner.Run(typeWithMethods.Type, effectiveConfig));
                    }
                    else
                    {
                        summaries.Add(BenchmarkRunner.Run(typeWithMethods.Type, typeWithMethods.Methods, effectiveConfig));
                    }
                    logger.WriteLine();
                }
            }

            // TODO: move this logic to the RunUrl method
#if CLASSIC
            if (args.Length > 0 && (args[0].StartsWith("http://") || args[0].StartsWith("https://")))
            {
                var url  = args[0];
                Uri uri  = new Uri(url);
                var name = uri.IsFile ? Path.GetFileName(uri.LocalPath) : "URL";
                summaries.Add(BenchmarkRunner.RunUrl(url, effectiveConfig));
            }
#endif

            var clockSpan = globalChronometer.Stop();
            BenchmarkRunnerCore.LogTotalTime(logger, clockSpan.GetTimeSpan(), "Global total time");
            return(summaries);
        }
Пример #4
0
 public static Summary Run(Type type, MethodInfo[] methods, IConfig config = null) =>
 Run(BenchmarkConverter.MethodsToBenchmarks(type, methods, config), config);
Пример #5
0
 private static Summary RunWithDirtyAssemblyResolveHelper(Type type, MethodInfo[] methods, IConfig config = null)
 => BenchmarkRunnerClean.Run(new[] { BenchmarkConverter.MethodsToBenchmarks(type, methods, config) }).Single();
Пример #6
0
 public static Summary Run(Type type, MethodInfo[] methods, IConfig config = null) =>
 BenchmarkRunnerCore.Run(BenchmarkConverter.MethodsToBenchmarks(type, methods, config), ToolchainExtensions.GetToolchain);