Ejemplo n.º 1
0
        public void Repeat_1_Average()
        {
            var repeated = new RepeatAverageBenchmark<string>(inner, 1);

            var result = repeated.MeasureConfiguration("Foo");
            Assert.AreEqual(10.0, result["Time"]);
            Assert.AreEqual(30.0, result["Memory"]);
        }
Ejemplo n.º 2
0
        public void Repeat_10_Average()
        {
            var repeated = new RepeatAverageBenchmark <string>(inner, 10);

            var result = repeated.MeasureConfiguration("Bar");

            Assert.AreEqual(55.0, result["Time"]);
            Assert.AreEqual(120.0, result["Memory"]);
        }
Ejemplo n.º 3
0
        private void OptimizeAnalysis(Configuration baseConfiguration)
        {
            IList <MeasuredConfiguration <Configuration> > measurements;
            var benchmark = CreateBenchmark();

            if (options.Repetitions > 1)
            {
                benchmark = new RepeatAverageBenchmark <Configuration>(benchmark, options.Repetitions);
            }
            switch (options.Method)
            {
            case OptimizationAlgorithm.Full:
                measurements = PerformFullExploration(baseConfiguration, benchmark);
                break;

            case OptimizationAlgorithm.Genetic:
                measurements = PerformGeneticAlgorithm(baseConfiguration, benchmark, options);
                break;

            default:
                throw new ArgumentOutOfRangeException("options", "The chosen method is not supported");
            }

            if (!options.All)
            {
                Console.WriteLine("Starting Pareto filter for dimensions Time and Memory");
                var paretoDimensions = new Dictionary <string, DimensionRating>();
                paretoDimensions.Add("Time", DimensionRating.SmallerIsBetter);
                paretoDimensions.Add("Memory", DimensionRating.SmallerIsBetter);
                var pareto = new ParetoFilter <Configuration>(paretoDimensions);

                measurements = pareto.Filter(measurements).ToList();
            }
            else
            {
                Console.WriteLine("Skipping Pareto filter");
            }

            Console.WriteLine("Saving results to disk.");
            if (measurements.Count == 1)
            {
                repository.Save(measurements[0].Configuration, options.Configuration);
            }
            else
            {
                using (var csv = new StreamWriter(Path.ChangeExtension(options.Configuration, "csv"), false))
                {
                    csv.Write("Configuration");
                    foreach (var metric in benchmark.Metrics)
                    {
                        csv.Write(";" + metric);
                    }
                    csv.WriteLine();
                    var index    = 1;
                    var baseName = Path.ChangeExtension(options.Configuration, null);
                    foreach (var config in measurements)
                    {
                        var fileName = string.Format("{0}_{1}.xmi", baseName, index);
                        csv.Write(Path.GetFileNameWithoutExtension(fileName));
                        foreach (var metric in benchmark.Metrics)
                        {
                            csv.Write(";");
                            csv.Write(config.Measurements[metric]);
                        }
                        csv.WriteLine();
                        repository.Save(config.Configuration, fileName);
                        index++;
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public void Repeat_0_Average()
 {
     var repeated = new RepeatAverageBenchmark <string>(inner, 0);
 }
Ejemplo n.º 5
0
 public void Repeat_Null_Average()
 {
     var repeated = new RepeatAverageBenchmark <string>(null);
 }
Ejemplo n.º 6
0
 public void Repeat_Null_Average()
 {
     var repeated = new RepeatAverageBenchmark<string>(null);
 }
Ejemplo n.º 7
0
 public void Repeat_0_Average()
 {
     var repeated = new RepeatAverageBenchmark<string>(inner, 0);
 }