mono / monodevelop

MonoDevelop is a cross platform .NET IDE
http://www.monodevelop.com
2.85k stars 1.02k forks source link

PERF: consider offloading UnitTestService.RebuildTests to a background thread #3606

Open KirillOsenkov opened 6 years ago

KirillOsenkov commented 6 years ago

During project loading we see this stack:

> MonoDevelop.UnitTesting.BinaryResultsStore.BinaryResultsStore Line 38 C# Symbols loaded.
  [Native to Managed Transition]  Annotated Frame
  [Managed to Native Transition]  Annotated Frame
  MonoDevelop.UnitTesting.SolutionFolderTestGroup.SolutionFolderTestGroup Line 48 C# Symbols loaded.
  MonoDevelop.UnitTesting.SolutionFolderTestGroup.CreateTest Line 61 C# Symbols loaded.
  MonoDevelop.UnitTesting.SystemTestProvider.CreateUnitTest Line 43 C# Symbols loaded.
  MonoDevelop.UnitTesting.UnitTestService.BuildTest Line 359 C# Symbols loaded.
  MonoDevelop.UnitTesting.UnitTestService.RebuildTests Line 346 C# Symbols loaded.
  MonoDevelop.UnitTesting.UnitTestService.OnWorkspaceChanged Line 294 C# Symbols loaded.
  MonoDevelop.Ide.RootWorkspace.NotifyItemAddedGui Line 970 C# Symbols loaded.
  MonoDevelop.Ide.RootWorkspace.NotifyItemAdded Line 942 C# Symbols loaded.
  MonoDevelop.Ide.RootWorkspaceItemCollection.OnItemsAdded Line 1378 C# Symbols loaded.
  MonoDevelop.Projects.ItemCollection<MonoDevelop.Projects.WorkspaceItem>.Add Line 66 C# Symbols loaded.
  MonoDevelop.Ide.RootWorkspace.BackgroundLoadWorkspace Line 597 C# Symbols loaded.

Consider offloading the RebuildTests call to a Task.Run, so that it returns control back to the workspace.

VS bug #576796

KirillOsenkov commented 6 years ago

Note: it currently uses the UI thread and is synchronous.