Exemple #1
0
        public void Upgrade(ILogger logger, IDeploymentComponentFactory deploymentComponentFactory, NugetPackage installedPackage)
        {
            PerformanceLogger performanceLogger = new PerformanceLogger(logger);

            performanceLogger.Restart("Opening, Calculating and planing deployment component");
            using (ParallelReadableZipArchive upgradeZipArchive = Open(packagePathAndFileName))
            {
                if (upgradeZipArchive == null)
                {
                    throw new InvalidOperationException($"Source archive {packagePathAndFileName} not found.");
                }

                using (ParallelReadableZipArchive installedzipArchive = installedPackage?.Open())
                {
                    IReadOnlyCollection <ParallelReadableZipArchiveEntry> installedEntries = installedzipArchive?.Entries;
                    IReadOnlyCollection <ParallelReadableZipArchiveEntry> newEntries       = upgradeZipArchive.Entries;

                    IReadOnlyCollection <IDeploymentComponent> deploymentComponents = deploymentComponentFactory.CreateDeploymentComponents(this, installedPackage, installedEntries, newEntries);

                    performanceLogger.Stop();

                    performanceLogger.Restart("Execution of deployment activities");
                    UpgradeDeploymentComponents(deploymentComponents, newEntries);
                    performanceLogger.Stop();
                }
            }
        }
Exemple #2
0
        protected override void OnUpdated(SceneData newNodes)
        {
            using (var t = new PerformanceLogger(nameof(OnUpdated)))
            {
                // Note this excludes scenes already processed so that visiting the previous world with a cached grid maintains its nodes states.
                // e.g. going to town and coming back to dungeon -> scene updates should remember its visited/explored state.

                foreach (var scene in newNodes.Scenes.Where(s => !_processedSceneHashes.Contains(s.SceneHash)))
                {
                    s_logger.Debug(
                        $"[{nameof(OnUpdated)}] Updating grid for scene '{scene.SceneHash}' with {scene.ExplorationNodes.Count} new nodes");

                    UpdateInnerGrid(scene.ExplorationNodes);

                    foreach (var node in scene.ExplorationNodes)
                    {
                        if (node == null)
                        {
                            continue;
                        }

                        node.AStarValue = (byte)(node.HasEnoughNavigableCells ? 1 : 2);

                        if (!node.IsIgnored && node.HasEnoughNavigableCells)
                        {
                            WalkableNodes.Add(node);
                        }
                    }

                    _processedSceneHashes.Add(scene.SceneHash);
                }

                s_logger.Debug($"[{nameof(OnUpdated)}] Updated WalkableNodes={WalkableNodes.Count} Time={t.Elapsed}");
            }
        }
        public void EfficientFrontierPerformanceTest()
        {
            // Create new portfolio
            var portf = new Portfolio("TestPortfolio");

            // Create instruments from data
            var instruments = from k in cov.Keys
                              select new Instrument(k, mean[k], cov[k]);

            portf.AddRange(instruments);

            // Add portfolio constraints
            portf.AddAllInvestedConstraint();
            portf.AddLongOnlyConstraint();
            double rf = 0.05;

            int runs = 100;

            for (int c = 0; c < runs; c++)
            {
                PerformanceLogger.Start("EfficientFrontierTests", "EfficientFrontierPerformanceTest", "Optimization.CalcEfficientFrontier");
                var res = PortfolioOptimizer.CalcEfficientFrontier(portf, rf, 50);
                Console.WriteLine(c);
                PerformanceLogger.Stop("EfficientFrontierTests", "EfficientFrontierPerformanceTest", "Optimization.CalcEfficientFrontier");
            }
            PerformanceLogger.WriteToCSV("performancedata.csv");
        }
Exemple #4
0
        private void PrintEventSummary(int repeatCount)
        {
            List <List <PerformanceLogger.EventTime> > events;

            lock (_events) {
                events  = _events;
                _events = new List <List <PerformanceLogger.EventTime> >();
                events.Add(PerformanceLogger.Take().ToList());
            }

            Console.WriteLine("{0,-20}{1,8}{2,8}{3,8}{4,8}",
                              "Event", "25%", "50%", "75%", "Count"
                              );

            var categories = events.SelectMany(i => i).GroupBy(e => e.Name).ToList();

            foreach (var category in categories.OrderBy(g => g.Key))
            {
                var times = category.Select(e => e.Duration).ToList();
                times.Sort();

                Console.WriteLine("{0,-20}{1,8}{2,8}{3,8}{4,8}",
                                  category.Key,
                                  times[times.Count / 4],
                                  times[times.Count / 2],
                                  times[times.Count / 4 * 3],
                                  times.Count / repeatCount
                                  );
            }
        }
        public void CalculateMetricsTest()
        {
            var count  = 100;
            var logger = new PerformanceLogger();

            logger.Start();

            for (int i = 0; i < count; ++i)
            {
                logger.Start("Fast");
                logger.Stop("Fast");
                logger.Start("Slow");
                System.Threading.Thread.Sleep(1);
                logger.Stop("Slow");
            }
            logger.Stop();

            var metrics = logger.CalculateMetrics();

            Assert.AreEqual(2, metrics.Count);
            foreach (var m in metrics)
            {
                Assert.AreEqual(count, m.Value.Count);
                Assert.IsTrue(m.Value.PercentTotal >= 0);
                Assert.IsTrue(m.Value.PercentTotal <= 100);
            }
        }
        public NeatCentralizedQTableBase(RLClientBase client, int numTeammates, int myUnum)
        {
            m_client = client;
            m_rows   = client.EnvRows;
            m_cols   = client.EnvCols;

            m_numTeammates = numTeammates;
            m_myUnum       = myUnum;
            m_numActions   = SoccerAction.GetActionCount(Params.MoveKings, m_numTeammates);

            this.PerformanceNetworkToEvaluate = new NeatPlayerPerformanceStats();

            if (NeatExpParams.SaveFitnessGrowth)
            {
                m_eaLogger = new PerformanceLogger(String.Format("EALogs/{0}-{1}-{2}",
                                                                 m_client.MyTeamName, m_myUnum, m_client.PerformanceLoggerMethodName), false);

                m_eaLogger.WriteLine("% Generation  BestFitness MeanFitness AvgComplexity");
            }

            Thread evoThread = new Thread(EvolutionaryThread);

            evoThread.Start();

            m_eventNewNetReady.WaitOne();
        }
        public PlcPerformanceLogBuilder(string identifier)
        {
            _identifier = identifier;

            _logger = new PerformanceLogger <PlcPerformanceData>("PlcPerformance");

            _logs = new List <long>(Buffer);
        }
Exemple #8
0
        void PerformanceLogger_DumpEvents(object sender, EventArgs e)
        {
            var events = PerformanceLogger.Take().ToList();

            lock (_events) {
                _events.Add(events);
            }
        }
Exemple #9
0
        static void RunAllExamples(bool isPerformance = false)
        {
            if (isPerformance)
            {
                PerformanceLogger.GetInstance().Enable(true);

                AppLogger.Enable(false);
            }

            RunAllRestExamples();
        }
Exemple #10
0
 /// <summary>
 /// 依據執行時間是否超過容忍上限記錄log
 /// </summary>
 /// <param name="timeCost">執行時間</param>
 /// <param name="logInfo">log訊息</param>
 private static void LogPerformance(TimeSpan timeCost, string logInfo)
 {
     if (timeCost < bound)
     {
         PerformanceLogger.Info(string.Format("{0} [{1} ms]", logInfo, timeCost.TotalMilliseconds));
     }
     else
     {
         PerformanceLogger.Warn(string.Format("{0} [{1} ms]", logInfo, timeCost.TotalMilliseconds));
     }
 }
Exemple #11
0
        public void CompressionTest()
        {
            string originalString = "qwerty1234567890";

            byte[] bytes = Encoding.UTF8.GetBytes(originalString);

            byte[] compressed   = PerformanceLogger.Zip(originalString);
            byte[] decompressed = Encoding.UTF8.GetBytes(PerformanceLogger.Unzip(compressed));

            //Console.WriteLine(Encoding.UTF8.GetString(bytes));
            //Console.WriteLine(Encoding.UTF8.GetString(decompressed));

            CollectionAssert.AreEqual(bytes, decompressed);
        }
 public void ExampleButtonDown()
 {
     if (PerformanceLogger.CurrentState == PerformanceLogger.LoggerState.Logging)
     {
         LoggerText.text = "Dumping logfile...";
         PerformanceLogger.EndLogger(Application.persistentDataPath + "/PerformanceLogs/" + SystemInfo.deviceName + " - Example.log", null, true, () => LoggerText.gameObject.SetActive(false));
     }
     else if (PerformanceLogger.CurrentState == PerformanceLogger.LoggerState.None)
     {
         LoggerText.text = "Logging...";
         LoggerText.gameObject.SetActive(true);
         PerformanceLogger.StartLogger();
     }
 }
        private List <LineSpanChunk> GetLineSpans(IList <LineInfo[]> chunkInfo, CancellationToken cancel)
        {
#if PERFORMANCE
            object cookie = null;
            try {
                PerformanceLogger.Start(ref cookie);
                return(GetLineSpans_Performance(chunkInfo, cancel));
            } catch (OperationCanceledException) {
                PerformanceLogger.Mark("Cancel");
                throw;
            } finally {
                PerformanceLogger.End(cookie);
            }
        }
        private static HashSet <LineSpan> LinkedLinesInternal(LineSpan line, CancellationToken cancel)
        {
#if PERFORMANCE
            object cookie = null;
            try {
                PerformanceLogger.Start(ref cookie);
                return(LinkedLinesInternal_Performance(line, cancel));
            } catch (OperationCanceledException) {
                PerformanceLogger.Mark("Cancel");
                throw;
            } finally {
                PerformanceLogger.End(cookie);
            }
        }
Exemple #15
0
        private async Task MessageReceivedAsync(QueueMessage <TMessage> message, CancellationToken cancellationToken)
        {
            using (var performanceLogger = new PerformanceLogger(performanceLoggingMethodName))
            {
                try
                {
                    if (Behaviour == AcknowledgeBehaviour.BeforeProcess)
                    {
                        _queueConsumer.AcknowledgeMessage(message.DeliveryTag);
                    }

                    await ProcessMessageAsync(message.Message, message.DeliveryTag, cancellationToken, message.RoutingKey);

                    if (Behaviour == AcknowledgeBehaviour.AfterProcess)
                    {
                        _queueConsumer.AcknowledgeMessage(message.DeliveryTag);
                    }

                    if (Behaviour != AcknowledgeBehaviour.Never && Behaviour != AcknowledgeBehaviour.Deferred)
                    {
                        _logger.InfoFormat(Resources.MessageProcessedLogEntry, message.DeliveryTag);
                    }
                }
                catch (AlreadyClosedException ex)
                {
                    _logger.Warn($"The connection to Rabbit was closed while processing message with deliveryTag '{message.DeliveryTag}', error details - '{ex.Message}'.");
                }
                catch (FatalErrorException e)
                {
                    if (Behaviour == AcknowledgeBehaviour.AfterProcess ||
                        Behaviour == AcknowledgeBehaviour.Async)
                    {
                        _queueConsumer.NegativelyAcknowledgeAndRequeue(message.DeliveryTag);
                    }

                    _logger.Fatal(Resources.FatalErrorLogEntry, e);
                }
                catch (Exception e)
                {
                    _logger.ErrorFormat(Resources.ProcessingErrorLogEntry, message.DeliveryTag, e);

                    if (Behaviour == AcknowledgeBehaviour.AfterProcess ||
                        Behaviour == AcknowledgeBehaviour.Async)
                    {
                        _queueConsumer.NegativelyAcknowledge(message.DeliveryTag);
                    }
                }
            }
        }
        public void Test()
        {
            var logger = new PerformanceLogger <PerformanceData>("unittests");

            var rnd = new Random();

            var dataValue = new [] { "Action 1", "Action 2", "Action 3" };

            foreach (var i in Enumerable.Range(0, 10))
            {
                var performanceData = new PerformanceData(dataValue[i % 3], (float)rnd.NextDouble());
                logger.Log(performanceData);
                Thread.Sleep(rnd.Next(0, 10));
            }
            Thread.Sleep(100);
        }
Exemple #17
0
        public void EncryptionTest()
        {
            // dlugosc stringa nie moze byc zbyt duza
            string originalString = "qwerty1234567890";

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            string pubkey = rsa.ToXmlString(false);
            string prikey = rsa.ToXmlString(true);

            byte[] encrypted = PerformanceLogger.RSAEncrypt(Encoding.Unicode.GetBytes(originalString), pubkey);
            byte[] decrypted = PerformanceLogger.RSADecrypt(encrypted, prikey);

            string processedString = Encoding.Unicode.GetString(decrypted);

            Assert.AreEqual(originalString, processedString);
        }
        /*
         * In case of error during uprading return a modified nuget package
         * assume that that everything that should be removed is still there
         * in case of upgrade it might be harder because we can not be sure what happend before.
         * but the deployment action must handle this!
         */
        public void Upgrade(string packageId, Version packageVersion, string packageDownloadUri)
        {
            var loggerstate = new LoggerState
            {
                { nameof(packageId), packageId },
                { nameof(packageVersion), packageVersion },
                { nameof(packageDownloadUri), packageDownloadUri },
            };

            logger.LogInformation("Upgrading package '{0}' to version '{1}'", packageId, packageVersion);

            using (logger.BeginScope(loggerstate))
            {
                PerformanceLogger performanceLogger = new PerformanceLogger(logger);

                logger.LogInformation("Starting action on package xml list.");
                performanceLogger.Restart("Starting action on package xml list.");
                packageListRepository.StartActionOnPackage(packageId, packageVersion);
                performanceLogger.Stop();

                logger.LogInformation("Installing new package.");
                performanceLogger.Restart("Installing new package.");
                NugetPackage upgradePackage = nugetPackageRepository.InstallPackage(packageId, packageVersion, packageDownloadUri);
                performanceLogger.Stop();

                logger.LogInformation("Reading installed package.");
                performanceLogger.Restart("Reading installed package.");
                NugetPackage installedPackage = nugetPackageRepository.ReadInstalledPackage(packageId);
                logger.LogInformation("Installed Package: {0}", installedPackage?.PackageIdentifier);
                performanceLogger.Stop();

                logger.LogInformation("Upgrading package.");
                performanceLogger.Restart("Upgrading package.");
                upgradePackage.Upgrade(logger, deploymentComponentFactory, installedPackage);
                performanceLogger.Stop();

                logger.LogInformation("Archiving package.");
                performanceLogger.Restart("Archiving package.");
                nugetPackageRepository.ArchivePackage(packageId);
                performanceLogger.Stop();

                logger.LogInformation("Ending action on package xml list.");
                performanceLogger.Restart("Ending action on package xml list.");
                packageListRepository.EndActionOnPackage(packageId, packageVersion);
                performanceLogger.Stop();
            }
        }
        private void FindLongestLine(
            ITextSnapshot snapshot,
            CancellationToken cancel
            )
        {
#if PERFORMANCE
            object cookie = null;
            try {
                PerformanceLogger.Start(ref cookie);
                FindLongestLine_Performance(snapshot, cancel);
            } catch (OperationCanceledException) {
                PerformanceLogger.Mark("Cancel");
                throw;
            } finally {
                PerformanceLogger.End(cookie);
            }
        }
        private Func <Task> RunSequentialProcessor(ProcessingQueue <TMessage> processingQueue, CancellationToken cancellationToken)
        {
            return(async() =>
            {
                QueueMessage <TMessage> dequeuedMessage;
                while (!cancellationToken.IsCancellationRequested && processingQueue.Queue.TryPeek(out dequeuedMessage))
                {
                    using (var performanceLogger = new PerformanceLogger(performanceLoggingMethodName))
                    {
                        _logger.DebugFormat(Resources.MessageReceivedLogEntry, dequeuedMessage.DeliveryTag);

                        try
                        {
                            await ProcessMessageAsync(
                                dequeuedMessage.Message,
                                dequeuedMessage.DeliveryTag,
                                cancellationToken,
                                dequeuedMessage.RoutingKey);

                            if (Behaviour != AcknowledgeBehaviour.Async)
                            {
                                _queueConsumer.AcknowledgeMessage(dequeuedMessage.DeliveryTag);
                            }

                            _logger.InfoFormat(Resources.MessageProcessedLogEntry, dequeuedMessage.DeliveryTag);
                        }
                        catch (FatalErrorException e)
                        {
                            _logger.Fatal(Resources.FatalErrorLogEntry, e);
                            _queueConsumer.NegativelyAcknowledgeAndRequeue(dequeuedMessage.DeliveryTag);
                            throw;
                        }
                        catch (Exception e)
                        {
                            _logger.ErrorFormat(Resources.ProcessingErrorLogEntry, dequeuedMessage.DeliveryTag, e);
                            _queueConsumer.NegativelyAcknowledge(dequeuedMessage.DeliveryTag);
                        }
                    }

                    // we have finished processing - remove the message from the queue and wait for the next one.
                    processingQueue.Queue.TryDequeue(out dequeuedMessage);
                    await processingQueue.AutoResetEvent.WaitOneAsync();
                }
            });
        }
        private void SetLineInfo(
            LineInfo[] lineInfo,
            ITextSnapshot snapshot,
            int firstLine,
            int lastLine,
            CancellationToken cancel
            )
        {
#if PERFORMANCE
            object cookie = null;
            try {
                PerformanceLogger.Start(ref cookie);
                SetLineInfo_Performance(lineInfo, snapshot, firstLine, lastLine, cancel);
            } catch (OperationCanceledException) {
                PerformanceLogger.Mark("Cancel");
                throw;
            } finally {
                PerformanceLogger.End(cookie);
            }
        }
        public void CanLoadTileDynamically()
        {
            // ARRANGE
            var logger = new PerformanceLogger();

            logger.Start();
            var componentRoot = TestHelper.GetGameRunner(_container);


            // ACT
            componentRoot.RunGame(TestHelper.BerlinTestFilePoint);
            logger.Stop();

            // ASSERT
            var tileLoader = _container.Resolve <ITileController>() as TileController;

            Assert.IsNotNull(tileLoader);
            Assert.AreEqual(1, GetSceneTileCount(tileLoader));

            Assert.Less(logger.Seconds, 3, "Loading took too long");
            // NOTE Actual value should be close to expected consumption for test data
            Assert.Less(logger.Memory, 100, "Memory consumption is too high!");
        }
Exemple #23
0
        protected override void OnUpdated(SceneData newNodes)
        {
            using (var t = new PerformanceLogger(nameof(OnUpdated)))
            {
                IsUpdatingNodes = true;

                var sw        = Stopwatch.StartNew();
                var nodeCount = 0;

                foreach (var scene in newNodes.Scenes)
                {
                    var nodes = scene.ExplorationNodes.SelectMany(n => n.Nodes, (p, c) => new AvoidanceNode(c))
                                .ToList();

                    s_logger.Debug(
                        $"[{nameof(OnUpdated)}] Updating grid for scene '{scene.SceneHash}' with {scene.ExplorationNodes.Count} new nodes");

                    UpdateInnerGrid(nodes);

                    foreach (var node in nodes)
                    {
                        nodeCount++;
                        if (GetNeighbors(node).Any(n => (n.NodeFlags & NodeFlags.AllowWalk) == 0))
                        {
                            node.NodeFlags |= NodeFlags.NearWall;
                        }
                    }
                }

                IsUpdatingNodes = false;
                IsPopulated     = true;

                sw.Stop();
                s_logger.Debug($"[{nameof(OnUpdated)}] Avoidance Grid updated NewNodes={nodeCount} NearestNodeFound={NearestNode != null} Time={t.Elapsed}");
            }
        }
Exemple #24
0
        private void CalculateShadowChunk(Vector2Int origin)
        {
            PerformanceLogger.Push("Shadow Map");
            // Clear
            var texture = new int[DataSize * DataSize];

            for (var i = 0; i < DataSize; i++)
            {
                for (var j = 0; j < DataSize; j++)
                {
                    var index = i * DataSize + j;
                    var v     = CalcShadow(new Vector3Int(i + origin.x, 0, j + origin.y));
                    texture[index] = v;
                }
            }

            if (!_buffers.ContainsKey(origin))
            {
                _buffers[origin] = new ComputeBuffer(DataSize * DataSize, sizeof(int));
            }

            _buffers[origin].SetData(texture);
            PerformanceLogger.Pop();
        }
        public HyperNEATQTable(RLClientBase client, int numTeammates, int myUnum)
        {
            m_client = client;
            m_rows   = client.EnvRows;
            m_cols   = client.EnvCols;

            m_numTeammates = numTeammates;
            m_myUnum       = myUnum;
            m_numActions   = SoccerAction.GetActionCount(Params.MoveKings, m_numTeammates);

            if (NeatExpParams.SaveFitnessGrowth)
            {
                m_eaLogger = new PerformanceLogger(String.Format("EALogs/{0}-{1}",
                                                                 m_client.MyTeamName, m_myUnum), false);

                m_eaLogger.WriteLine("% generation  bestfitness");
            }

            Thread evoThread = new Thread(EvolutionaryThread);

            evoThread.Start();

            m_eventNewNetReady.WaitOne();
        }
Exemple #26
0
        void UpdateAdornments_Performance(
            ITextSnapshot snapshot,
            ITextViewModel viewModel,
            ITextViewLine firstVisibleLine,
            IEnumerable <LineSpan> analysisLines
            )
        {
#endif
            double spaceWidth = firstVisibleLine.VirtualSpaceWidth;
            if (spaceWidth <= 0.0)
            {
                return;
            }
            double horizontalOffset = firstVisibleLine.TextLeft;

            var unusedLines = new HashSet <LineSpan>(Lines.Keys);

            var caret = CaretHandlerBase.FromName(Theme.CaretHandler, View.Caret.Position.VirtualBufferPosition, Analysis.TabSize);

            object perfCookie = null;
            PerformanceLogger.Start(ref perfCookie);
#if DEBUG
            var initialCount = Lines.Count;
#endif
            foreach (var line in analysisLines.Concat(GetPageWidthLines()))
            {
                double top    = View.ViewportTop;
                double bottom = View.ViewportBottom;
                double left   = line.Indent * spaceWidth + horizontalOffset;

                Line adornment;
                unusedLines.Remove(line);

                if (line.Type == LineSpanType.PageWidthMarker)
                {
                    line.Highlight = (Analysis.LongestLine > line.Indent);
                    if (!Lines.TryGetValue(line, out adornment))
                    {
                        Lines[line] = adornment = CreateGuide(Canvas);
                    }
                    UpdateGuide(line, adornment, left, top, bottom);
                    continue;
                }

                if (Lines.TryGetValue(line, out adornment))
                {
                    adornment.Visibility = Visibility.Hidden;
                }

                caret.AddLine(line, willUpdateImmediately: true);

                if (line.FirstLine >= 0 && line.LastLine < int.MaxValue)
                {
                    var firstLineNumber = line.FirstLine;
                    var lastLineNumber = line.LastLine;
                    ITextSnapshotLine firstLine, lastLine;
                    try
                    {
                        firstLine = snapshot.GetLineFromLineNumber(firstLineNumber);
                        lastLine  = snapshot.GetLineFromLineNumber(lastLineNumber);
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
                        continue;
                    }

                    if (firstLine.Start > View.TextViewLines.LastVisibleLine.Start ||
                        lastLine.Start < View.TextViewLines.FirstVisibleLine.Start)
                    {
                        continue;
                    }

                    while (
                        !viewModel.IsPointInVisualBuffer(firstLine.Start, PositionAffinity.Successor) &&
                        ++firstLineNumber < lastLineNumber
                        )
                    {
                        try
                        {
                            firstLine = snapshot.GetLineFromLineNumber(firstLineNumber);
                        }
                        catch (Exception ex)
                        {
                            Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
                            firstLine = null;
                            break;
                        }
                    }

                    while (
                        !viewModel.IsPointInVisualBuffer(lastLine.Start, PositionAffinity.Predecessor) &&
                        --lastLineNumber > firstLineNumber
                        )
                    {
                        try
                        {
                            lastLine = snapshot.GetLineFromLineNumber(lastLineNumber);
                        }
                        catch (Exception ex)
                        {
                            Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
                            lastLine = null;
                            break;
                        }
                    }
                    if (firstLine == null || lastLine == null || firstLineNumber > lastLineNumber)
                    {
                        continue;
                    }


                    IWpfTextViewLine firstView, lastView;
                    try
                    {
                        firstView = View.GetTextViewLineContainingBufferPosition(firstLine.Start);
                        lastView  = View.GetTextViewLineContainingBufferPosition(lastLine.End);
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError("UpdateAdornments GetTextViewLineContainingBufferPosition failed\n{0}", ex);
                        continue;
                    }

                    string extentText;
                    if (!string.IsNullOrWhiteSpace((extentText = firstView.Extent.GetText())) &&
                        line.Indent > extentText.LeadingWhitespace(Analysis.TabSize)
                        )
                    {
                        continue;
                    }

                    if (firstView.VisibilityState != VisibilityState.Unattached)
                    {
                        top = firstView.Top;
                    }
                    if (lastView.VisibilityState != VisibilityState.Unattached)
                    {
                        bottom = lastView.Bottom;
                    }
                }

                if (!Lines.TryGetValue(line, out adornment))
                {
                    Lines[line] = adornment = CreateGuide(Canvas);
                }
                UpdateGuide(line, adornment, left, top, bottom);
            }

            PerformanceLogger.End(perfCookie);
#if DEBUG
            Debug.WriteLine("Added {0} guides", Lines.Count - initialCount);
            Debug.WriteLine("Removed {0} guides", unusedLines.Count);
            Debug.WriteLine("{0} guides active", Lines.Count - unusedLines.Count);
            Debug.WriteLine("");
#endif

            foreach (var line in unusedLines)
            {
                Line adornment;
                if (Lines.TryGetValue(line, out adornment))
                {
                    Canvas.Children.Remove(adornment);
                    Lines.Remove(line);
                }
            }
            foreach (var line in caret.GetModified())
            {
                Line adornment;
                if (Lines.TryGetValue(line, out adornment))
                {
                    UpdateGuide(line, adornment);
                }
            }
        }
Exemple #27
0
        void UpdateAdornmentsWorker()
        {
            //var analysisLines = Analysis.Lines;
            //if (Analysis.Snapshot != View.TextSnapshot) {
            //    var task = Analysis.Update();
            //    if (task != null) {
            //        UpdateAdornments(task);
            //    }
            //    return;
            //} else if (analysisLines == null) {
            //    UpdateAdornments(Analysis.Reset());
            //    return;
            //}

            if (!GlobalVisible)
            {
                Canvas.Visibility = Visibility.Collapsed;
                return;
            }
            Canvas.Visibility = Visibility.Visible;

            var snapshot  = View.TextSnapshot;
            var viewModel = View.TextViewModel;

            if (snapshot == null || viewModel == null)
            {
                return;
            }

            var firstVisibleLine = View.TextViewLines.FirstOrDefault(line => line.IsFirstTextViewLineForSnapshotLine);

            if (firstVisibleLine == null)
            {
                return;
            }
            var lastVisibleLine = View.TextViewLines.LastOrDefault(line => line.IsLastTextViewLineForSnapshotLine);

            if (lastVisibleLine == null)
            {
                return;
            }

            var analysisLines = Analysis.GetLines(
                firstVisibleLine.Start.GetContainingLine().LineNumber,
                lastVisibleLine.Start.GetContainingLine().LineNumber
                );

            if (!analysisLines.Any())
            {
                return;
            }


#if PERFORMANCE
            object cookie = null;
            try {
                PerformanceLogger.Start(ref cookie);
                UpdateAdornments_Performance(
                    snapshot,
                    viewModel,
                    firstVisibleLine,
                    analysisLines
                    );
            } catch (OperationCanceledException) {
                PerformanceLogger.Mark("Cancel");
                throw;
            } finally {
                PerformanceLogger.End(cookie);
            }
        }
Exemple #28
0
        static void RunPerformanceTest()
        {
            PerformanceLogger.GetInstance().Enable(true);

            RunAllRestExamples();
        }
Exemple #29
0
 private static void Main()
 {
     //Starts monitoring
     PerformanceLogger.Start();
 }
Exemple #30
0
 private void Start()
 {
     _logger           = GetComponent <PerformanceLogger>();
     _logger.NewFrame += onNewFrame;
 }