Exemplo n.º 1
0
        private static DiffResult DoBenchmark(IGeometryDiff differ, DiffData payload)
        {
            var patch = RunWithTimer(CreatePatch, differ, payload, null);

            var forward = RunWithTimer(ApplyPatch, differ, payload, patch.Data);

            var reverse = RunWithTimer(UndoPatch, differ, payload, patch.Data);


            return(new DiffResult()
            {
                CreateTime = patch.Time,
                ApplyTime = forward.Time,
                UndoTime = reverse.Time,
                PatchSize = patch.Data.Length,
                ForwardCorrect = Equals(forward.Data, payload.NewGeom),
                UndoCorrect = Equals(reverse.Data, payload.OldGeom),
                CreateError = patch.Error,
                ApplyError = forward.Error,
                UnddoError = reverse.Error
            });
        }
Exemplo n.º 2
0
        private static Result <TResult> RunWithTimer <TResult>(Func <IGeometryDiff,
                                                                     DiffData, byte[], TResult> method, IGeometryDiff differ, DiffData payload, byte[] patch)
        {
            var stopwatch = new Stopwatch();

            /*Process.GetCurrentProcess().ProcessorAffinity =
             *  new IntPtr(2); // Uses the second Core or Processor for the Test
             * Process.GetCurrentProcess().PriorityClass =
             *  ProcessPriorityClass.High; // Prevents "Normal" processes // from interrupting Threads
             * Thread.CurrentThread.Priority =
             *  ThreadPriority.Highest; // Prevents "Normal" Threads from interrupting this thread
             */
            try
            {
                double time = 0;
                var    data = default(TResult);
                for (var i = 0; i < 2; i++)
                {
                    stopwatch.Reset();
                    stopwatch.Start();
                    data = method(differ, payload, patch);
                    stopwatch.Stop();

                    if (i > 0)
                    {
                        time = stopwatch.Elapsed.TotalMilliseconds;
                    }
                }

                //var mean = Mean(res);
                // var stDev = StDev(res, mean);
                //return new Result<TResult>() {Stats = new Stats() {Mean = mean, StDev = stDev}, Data = data};
                return(new Result <TResult>()
                {
                    Time = time, Data = data
                });
            }
            catch (Exception e)
            {
                return(new Result <TResult>()
                {
                    Error = e.Message
                });
            }
        }
Exemplo n.º 3
0
 private static IGeometry UndoPatch(IGeometryDiff differ, DiffData payload, byte[] patch) =>
 differ.UndoPatch(payload.NewGeom, patch);
Exemplo n.º 4
0
 private static IGeometry ApplyPatch(IGeometryDiff differ, DiffData payload, byte[] patch) =>
 differ.ApplyPatch(payload.OldGeom, patch);
Exemplo n.º 5
0
 private static byte[] CreatePatch(IGeometryDiff differ, DiffData payload, byte[] patch) =>
 differ.CreatePatch(payload.OldGeom, payload.NewGeom);