Exemplo n.º 1
0
        private AreaResultViewModel GetAreaWithParallel(SurfaceInfoViewModel model)
        {
            var    tasks = new List <Task <double> >();
            double hX    = (model.XEnd - model.XStart) / model.ThreadsCount;
            double hY    = (model.YEnd - model.YStart) / model.ThreadsCount;

            for (int i = 0; i < model.ThreadsCount; i++)
            {
                double xnStep = model.XStart + hX * i;
                double xkStep = model.XStart + hX * (i + 1);

                tasks.Add(new Task <double>(() =>
                                            SurfaceAreaService.CalculateSurfaceAreaNamed(
                                                xnStep, xkStep,
                                                model.YStart, model.YEnd,
                                                model.Steps / model.ThreadsCount,
                                                model.Name)));
            }

            var startTime = Stopwatch.StartNew();

            tasks.ForEach(t => t.Start());
            Task.WaitAll(tasks.ToArray());

            var res = tasks.Sum(t => t.Result);

            startTime.Stop();

            var resultTime = startTime.Elapsed;

            return(new AreaResultViewModel {
                Result = res, Description = resultTime.ToString(),
            });
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            try
            {
                //Please turn off any screen dimmers.
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Hello!\n\n");
                //So, we have a browser open with some "follow" image links.
                //If you click these image links, then you follow the person.

                //1) Console will capture the window.
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Running...");
                Image image = ImageRenderService.CaptureDesktop();
                //2) Screenshot translates to List of coordinates.
                List <Point> coordinates = ImageRenderService.TranslateImageToCoordinates(image);
                //3) Iterate through coordinates and click those coordinates.
                int pageDownWait       = int.Parse(ConfigurationManager.AppSettings["PageDownWait"]);
                int waitBetweenFollows = int.Parse(ConfigurationManager.AppSettings["WaitBetweenFollows"]);
                while (coordinates != null && coordinates.Count() > 0)
                {
                    int count = coordinates.Count();
                    int temp  = 0;
                    foreach (var item in coordinates)
                    {
                        temp++;
                        SurfaceAreaService.MouseClick(item);
                        System.Threading.Thread.Sleep(waitBetweenFollows);
                        if (temp == count)
                        {   //4) Page Down. Rinse and Repeat until no matches are found.
                            SurfaceAreaService.PageDown();
                            System.Threading.Thread.Sleep(pageDownWait);
                        }
                    }
                    image       = ImageRenderService.CaptureDesktop();
                    coordinates = ImageRenderService.TranslateImageToCoordinates(image);
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\n\nCompleted.");
                Console.ReadLine();
            }
        }
Exemplo n.º 3
0
        private AreaResultViewModel GetAreaWithoutParallel(SurfaceInfoViewModel model)
        {
            var    startTime = Stopwatch.StartNew();
            double res       = SurfaceAreaService.CalculateSurfaceAreaNamed(model.XStart, model.XEnd,
                                                                            model.YStart, model.YEnd,
                                                                            model.Steps,
                                                                            model.Name);

            startTime.Stop();

            var resultTime = startTime.Elapsed;

            return(new AreaResultViewModel {
                Result = res, Description = resultTime.ToString(),
            });
        }
Exemplo n.º 4
0
        private AreaResultViewModel GetAreaWithoutParallel(SurfaceInfoViewModel model)
        {
            string outFileName = $"{DateTime.Now.ToString("yymmssfff")}-thread-calculations.txt";

            var    startTime = Stopwatch.StartNew();
            double res       = SurfaceAreaService.CalculateSurfaceArea(model.XStart, model.XEnd,
                                                                       model.YStart, model.YEnd,
                                                                       model.Steps,
                                                                       outFileName);

            startTime.Stop();

            var resultTime = startTime.Elapsed;

            return(new AreaResultViewModel {
                Result = res, Description = resultTime.ToString(),
            });
        }
Exemplo n.º 5
0
        public async Task <ActionResult> GetTimeChart(SurfaceInfoViewModel model)
        {
            string outFileName = $"{DateTime.Now.ToString("yymmssfff")}-performance-testing.txt";

            var timeArr    = new List <long>();
            var threadsArr = new [] { 1, 2, 3, 5, 10, 15, 30 };

            foreach (var thrdCount in threadsArr)
            {
                var    tasks = new List <Task <double> >();
                double hX    = (model.XEnd - model.XStart) / thrdCount;
                double hY    = (model.YEnd - model.YStart) / thrdCount;

                for (int i = 0; i < thrdCount; i++)
                {
                    double xnStep = model.XStart + hX * i;
                    double xkStep = model.XStart + hX * (i + 1);

                    tasks.Add(new Task <double>(() =>
                                                SurfaceAreaService.CalculateSurfaceArea(
                                                    xnStep, xkStep,
                                                    model.YStart, model.YEnd,
                                                    model.Steps / thrdCount,
                                                    outFileName)));
                }

                var startTime = Stopwatch.StartNew();

                tasks.ForEach(t => t.Start());
                Task.WaitAll(tasks.ToArray());
                var res = tasks.Sum(t => t.Result);

                startTime.Stop();

                timeArr.Add(startTime.ElapsedMilliseconds);
            }

            return(new ObjectResult(new { threadsArr = threadsArr, timeArr = timeArr.ToArray() }));
        }
Exemplo n.º 6
0
        public async Task <ActionResult> GetAccuracyChart(SurfaceInfoViewModel model)
        {
            var exactAreaResult = await GetExactArea(model);

            string outFileName = $"{DateTime.Now.ToString("yymmssfff")}-accuracy-testing.txt";

            var accuracyArr = new List <double>();
            var threadsArr  = new[] { 1, 2, 3, 5, 10, 15, 30 };

            foreach (var thrdCount in threadsArr)
            {
                var    tasks = new List <Task <double> >();
                double hX    = (model.XEnd - model.XStart) / thrdCount;
                double hY    = (model.YEnd - model.YStart) / thrdCount;

                for (int i = 0; i < thrdCount; i++)
                {
                    double xnStep = model.XStart + hX * i;
                    double xkStep = model.XStart + hX * (i + 1);

                    tasks.Add(new Task <double>(() =>
                                                SurfaceAreaService.CalculateSurfaceArea(
                                                    xnStep, xkStep,
                                                    model.YStart, model.YEnd,
                                                    model.Steps / thrdCount,
                                                    outFileName)));
                }
                tasks.ForEach(t => t.Start());
                Task.WaitAll(tasks.ToArray());

                var res = tasks.Sum(t => t.Result);


                accuracyArr.Add(Math.Abs(res - exactAreaResult));
            }

            return(new ObjectResult(new { threadsArr, accuracyArr = accuracyArr.ToArray() }));
        }