Esempio n. 1
0
 internal static DocumentAnalyzer MakeAnalyzer(
     ITextSnapshot text,
     LineBehavior behavior,
     int indentSize,
     int tabSize,
     int chunkSize
     )
 {
     return(new DocumentAnalyzer(text, behavior, indentSize, tabSize, chunkSize));
 }
Esempio n. 2
0
        internal static DocumentAnalyzer MakeAnalyzer(
            string text,
            LineBehavior behavior,
            int indentSize,
            int tabSize,
            string contentType,
            int chunkSize
            )
        {
            var buffer = new MockTextBuffer(text);

            buffer.ContentType = new MockContentType(contentType, null);
            return(MakeAnalyzer(buffer.CurrentSnapshot, behavior, indentSize, tabSize, chunkSize));
        }
Esempio n. 3
0
        private void Run()
        {
            PerformanceLogger.DumpEvents += PerformanceLogger_DumpEvents;
            try {
                foreach (var file in _testFiles)
                {
                    var buffer   = new MockTextBuffer(File.ReadAllText(file));
                    var snapshot = buffer.CurrentSnapshot;

                    var behaviour = new LineBehavior {
                        VisibleEmpty      = true,
                        VisibleEmptyAtEnd = true,
                        VisibleAligned    = true,
                        VisibleAtTextEnd  = false,
                        ExtendInwardsOnly = true,
                        VisibleUnaligned  = true
                    };

                    foreach (var chunkSize in new[] { 5, 10, 30, 50, 100, 150, 200 })
                    {
                        var da = new DocumentAnalyzer(snapshot, behaviour, 4, 4, chunkSize);
                        var sw = Stopwatch.StartNew();
                        for (int repeats = 1000; repeats > 0; --repeats)
                        {
                            IndentGuidePackage.JoinableTaskFactory.Run(async delegate
                            {
                                await da.ResetAsync().ConfigureAwait(true);
                            });
                        }

                        for (int line = 0; line < da.Snapshot.LineCount; line += 30)
                        {
                            var lines = da.GetLines(line, line + 35).ToList();
                        }

                        sw.Stop();

                        Console.WriteLine("ChunkSize = {0}", chunkSize);
                        Console.WriteLine("Duration = {0}", sw.ElapsedTicks / 1000);
                        PrintEventSummary(1000);
                        Console.WriteLine();
                    }
                }
            } finally {
                PerformanceLogger.DumpEvents -= PerformanceLogger_DumpEvents;
            }
        }
Esempio n. 4
0
        public void UpdateSnapshot()
        {
            var buffer = new MockTextBuffer("");

            var behavior = new LineBehavior();
            var da       = MakeAnalyzer(buffer.CurrentSnapshot, behavior, 4, 4, 5);

            da.ResetAndWait();

            da.AssertLinesIncludeExactly();

            var prevSnapshot = da.Snapshot;

            {
                var edit = buffer.CreateEdit();
                edit.Insert(0, @"0
    1
        2
    3
4");
                edit.Apply();
            }

            da.UpdateAndWait(null);
            Assert.AreNotSame(prevSnapshot, da.Snapshot);
            Assert.AreNotEqual(prevSnapshot.Version.VersionNumber, da.Snapshot.Version.VersionNumber);
            da.AssertLinesIncludeExactly(
                new LineSpan(1, 3, 0, LineSpanType.Normal),
                new LineSpan(2, 2, 4, LineSpanType.Normal)
                );

            prevSnapshot = da.Snapshot;
            {
                var edit = buffer.CreateEdit();
                edit.Delete(prevSnapshot.GetLineFromLineNumber(2).ExtentIncludingLineBreak.Span);
                edit.Apply();
            }

            da.UpdateAndWait(null);
            Assert.AreNotSame(prevSnapshot, da.Snapshot);
            Assert.AreNotEqual(prevSnapshot.Version.VersionNumber, da.Snapshot.Version.VersionNumber);
            da.AssertLinesIncludeExactly(
                new LineSpan(1, 2, 0, LineSpanType.Normal)
                );
        }
 internal static DocumentAnalyzer MakeAnalyzer(
     string text,
     LineBehavior behavior,
     int indentSize,
     int tabSize,
     string contentType,
     int chunkSize
 )
 {
     var buffer = new MockTextBuffer(text);
     buffer.ContentType = new MockContentType(contentType, null);
     return MakeAnalyzer(buffer.CurrentSnapshot, behavior, indentSize, tabSize, chunkSize);
 }
 internal static DocumentAnalyzer MakeAnalyzer(
     ITextSnapshot text,
     LineBehavior behavior,
     int indentSize,
     int tabSize,
     int chunkSize
 )
 {
     return new DocumentAnalyzer(text, behavior, indentSize, tabSize, chunkSize);
 }
        public void UpdateSnapshot()
        {
            var buffer = new MockTextBuffer("");

            var behavior = new LineBehavior();
            var da = MakeAnalyzer(buffer.CurrentSnapshot, behavior, 4, 4, 5);
            da.ResetAndWait();

            da.AssertLinesIncludeExactly();

            var prevSnapshot = da.Snapshot;

            {
                var edit = buffer.CreateEdit();
                edit.Insert(0, @"0
            1
            2
            3
            4");
                edit.Apply();
            }

            da.UpdateAndWait(null);
            Assert.AreNotSame(prevSnapshot, da.Snapshot);
            Assert.AreNotEqual(prevSnapshot.Version.VersionNumber, da.Snapshot.Version.VersionNumber);
            da.AssertLinesIncludeExactly(
                new LineSpan(1, 3, 0, LineSpanType.Normal),
                new LineSpan(2, 2, 4, LineSpanType.Normal)
            );

            prevSnapshot = da.Snapshot;
            {
                var edit = buffer.CreateEdit();
                edit.Delete(prevSnapshot.GetLineFromLineNumber(2).ExtentIncludingLineBreak.Span);
                edit.Apply();
            }

            da.UpdateAndWait(null);
            Assert.AreNotSame(prevSnapshot, da.Snapshot);
            Assert.AreNotEqual(prevSnapshot.Version.VersionNumber, da.Snapshot.Version.VersionNumber);
            da.AssertLinesIncludeExactly(
                new LineSpan(1, 2, 0, LineSpanType.Normal)
            );
        }
Esempio n. 8
0
        private void Run()
        {
            PerformanceLogger.DumpEvents += PerformanceLogger_DumpEvents;
            try {
                foreach (var file in _testFiles) {
                    var buffer = new MockTextBuffer(File.ReadAllText(file));
                    var snapshot = buffer.CurrentSnapshot;

                    var behaviour = new LineBehavior {
                        VisibleEmpty = true,
                        VisibleEmptyAtEnd = true,
                        VisibleAligned = true,
                        VisibleAtTextEnd = false,
                        ExtendInwardsOnly = true,
                        VisibleUnaligned = true
                    };

                    foreach (var chunkSize in new[] { 5, 10, 30, 50, 100, 150, 200 }) {
                        var da = new DocumentAnalyzer(snapshot, behaviour, 4, 4, chunkSize);
                        var sw = Stopwatch.StartNew();
                        for (int repeats = 1000; repeats > 0; --repeats) {
                            da.Reset().GetAwaiter().GetResult();
                        }

                        for (int line = 0; line < da.Snapshot.LineCount; line += 30) {
                            var lines = da.GetLines(line, line + 35).ToList();
                        }

                        sw.Stop();

                        Console.WriteLine("ChunkSize = {0}", chunkSize);
                        Console.WriteLine("Duration = {0}", sw.ElapsedTicks / 1000);
                        PrintEventSummary(1000);
                        Console.WriteLine();
                    }
                }
            } finally {
                PerformanceLogger.DumpEvents -= PerformanceLogger_DumpEvents;
            }
        }