Ejemplo n.º 1
0
        /// <summary>
        /// Runs a given scenario. It makes a cartesian product of all the scenario possibilities.
        /// </summary>
        /// <typeparam name="TGenerator"></typeparam>
        /// <typeparam name="TLayout"></typeparam>
        /// <param name="generator"></param>
        /// <param name="scenario"></param>
        /// <param name="mapDescriptions"></param>
        /// <param name="repeats"></param>
        /// <param name="numberOfLayouts"></param>
        /// <param name="writer"></param>
        public void Execute <TGenerator>(TGenerator generator, BenchmarkScenario <TGenerator> scenario, List <Tuple <string, TMapDescription> > mapDescriptions,
                                         int repeats = 10, int numberOfLayouts = 10, TextWriter writer = null, TextWriter debugWriter = null)
            where TGenerator : IBenchmarkableLayoutGenerator <TMapDescription, TLayout>
        {
            foreach (var product in scenario.GetSetupsGroups().Select(x => x.GetSetups()).Where(x => x.Count != 0).CartesianProduct())
            {
                var name = string.Join(", ", product.Select(x => x.Item1));
                product.Select(x => x.Item2).ToList().ForEach(x => x(generator));

                Execute(generator, name, mapDescriptions, repeats, numberOfLayouts, writer, debugWriter);
            }
        }
Ejemplo n.º 2
0
		/// <summary>
		/// Runs a given scenario. It makes a cartesian product of all the scenario possibilities.
		/// </summary>
		/// <typeparam name="TGenerator"></typeparam>
		/// <typeparam name="TLayout"></typeparam>
		/// <param name="generator"></param>
		/// <param name="scenario"></param>
		/// <param name="mapDescriptions"></param>
		/// <param name="repeats"></param>
		/// <param name="numberOfLayouts"></param>
		/// <param name="writer"></param>
		public void Execute<TGenerator>(TGenerator generator, BenchmarkScenario<TGenerator> scenario, List<Tuple<string, TMapDescription>> mapDescriptions,
			int repeats = 10, string filename = null)
			where TGenerator : IBenchmarkableLayoutGenerator<TMapDescription, TLayout>
		{
			filename = filename ?? $"{new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds()}.txt";

			foreach (var product in scenario.GetSetupsGroups().Select(x => x.GetSetups()).Where(x => x.Count != 0).CartesianProduct())
			{
				var name = string.Join(", ", product.Select(x => x.Item1));
				product.Select(x => x.Item2).ToList().ForEach(x => x(generator));

				Execute(generator, name, mapDescriptions, repeats, filename);
			}
		}