public static List <BenchMarkResult> Method2(int nodesCount, int dimension, bool onlyS1EqualOne = false, int limit = 1000) { var diam = float.MaxValue; var avgDiam = float.MaxValue; //var lockEqual = new object(); var indexer = new int[dimension]; var optimalParams = new List <Tuple <int[], long> >(); for (var i = 0; i < dimension; i++) { indexer[i] = i + 1; } var start = Stopwatch.StartNew(); var finishedCollection = new ConcurrentQueue <Tuple <int[], float[], long> >(); var srcMatrix = Enumerable.Repeat(new byte[nodesCount], nodesCount).ToArray(); var lim = 0; var bench = new List <BenchMarkResult>(); while (lim < limit && (onlyS1EqualOne && indexer[0] < 2 || !onlyS1EqualOne && indexer[0] + dimension <= nodesCount / 2 + 1)) { BasicCirculantGenerator.SpecialIncrement(nodesCount, ref indexer, onlyS1EqualOne); var startT = Stopwatch.StartNew(); var tempResult = OptimizedParallelCirculantGenerator.SolveDiamAndAverDiam(nodesCount, indexer); var memory = Process.GetCurrentProcess().WorkingSet64; startT.Stop(); bench.Add(new BenchMarkResult { Memory = memory, NodesCount = nodesCount, Grade = dimension, Total = startT.ElapsedTicks, TimeSpans = new Tuple <string, long>[] { new Tuple <string, long>("Calculation", startT.ElapsedTicks), } }); lim++; } ; return(bench); }
private static void Main(string[] args) { var yourTask = SuperUtilities.LoadTask(new FileInfo(ConfigurationManager.AppSettings["FirstTaskPath"]).FullName); var circulantGenerator = new OptimizedParallelCirculantGenerator(); Console.WriteLine("The application is started"); var task = Task.Run(() => { circulantGenerator.Start(yourTask); }); var stopped = false; do { if (stopped) { continue; } Console.WriteLine("Type 'stop' for stop operation."); var line = Console.ReadLine(); if (!(line?.Equals("stop", StringComparison.InvariantCultureIgnoreCase) ?? false)) { continue; } Console.WriteLine("Program is stopping, please wait."); circulantGenerator.Stop(); stopped = true; //thread?.Abort(); } while (!(task.IsCompleted || task.IsCanceled || task.IsFaulted)); }