Esempio n. 1
0
        internal void RunTests()
        {
            resultHandler.HandleStartRun(options);
            var types = typeof(Program).Assembly
                        .GetTypes()
                        .OrderBy(type => type.FullName)
                        .Where(type => type.GetMethods(AllInstance)
                               .Any(IsBenchmark));

            foreach (Type type in types)
            {
                if (options.TypeFilter != null && type.Name != options.TypeFilter)
                {
                    continue;
                }

                var ctor = type.GetConstructor(Type.EmptyTypes);
                if (ctor == null)
                {
                    resultHandler.HandleWarning(string.Format("Ignoring {0}: no public parameterless constructor", type.Name));
                    continue;
                }
                resultHandler.HandleStartType(type);
                object instance = ctor.Invoke(null);
                foreach (var method in type.GetMethods(AllInstance).Where(IsBenchmark))
                {
                    if (options.MethodFilter != null && method.Name != options.MethodFilter)
                    {
                        continue;
                    }

                    if (method.GetParameters().Length != 0)
                    {
                        resultHandler.HandleWarning(string.Format("Ignoring {0}: method has parameters", method.Name));
                        continue;
                    }
                    BenchmarkResult result = RunBenchmark(method, instance, options);
                    if (result.Duration == Duration.Zero)
                    {
                        resultHandler.HandleWarning(string.Format("Test {0} had zero duration; no useful result.", result.Method.Name));
                    }
                    resultHandler.HandleResult(result);
                }
                resultHandler.HandleEndType();
            }
            resultHandler.HandleEndRun();
        }
 internal override void HandleResult(BenchmarkResult result)
 {
     Console.WriteLine(formatString, result.Method.Name, result.CallsPerSecond,
                       result.Iterations, result.Duration.Ticks, result.NanosecondsPerCall);
 }
Esempio n. 3
0
 /// <summary>
 /// Called once for each test.
 /// </summary>
 /// <param name="result"></param>
 internal virtual void HandleResult(BenchmarkResult result)
 {
 }