internal static DocumentAnalyzer MakeAnalyzer( ITextSnapshot text, LineBehavior behavior, int indentSize, int tabSize, int chunkSize ) { return(new DocumentAnalyzer(text, behavior, indentSize, tabSize, chunkSize)); }
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)); }
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; } }
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); }
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; } }