Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authortherzok <marius.ungureanu@xamarin.com>2019-06-18 11:04:48 +0300
committertherzok <marius.ungureanu@xamarin.com>2019-06-20 05:09:11 +0300
commit41c499a99946a920ecdb6c0abc28df5bbf17a7b0 (patch)
treed15aa4428e03fb00e1961df735c85cf08c4799fe /main
parent7a2bffb6653880bbe97eea1279cec2dd6e2156c9 (diff)
Some more perf optimizations here
``` Source MonoDevelop.Core.AsyncEvents 00:02:34.7219796 - MonoDevelop.Projects.Project Void OnFileCreated(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:01.5497746 - MonoDevelop.Projects.Project Void OnFileDeleted(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0229513 - MonoDevelop.Projects.Project Void OnFileRenamed(System.Object, MonoDevelop.Core.FileCopyEventArgs) Source MonoDevelop.Core.EventQueue 00:02:10.0724091 - MonoDevelop.Projects.Project Void HandleFileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:18.8409343 - MonoDevelop.Ide.TypeSystem.MonoDevelopMetadataReference Void OnUpdatedOnDisk(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:15.7531517 - MonoDevelop.Projects.FileStatusTracker`1[MonoDevelop.Projects.SolutionItemEventArgs] Void HandleFileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:11.4172185 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ShowAllFilesBuilderExtension Void OnSystemFileAdded(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:10.6727282 - MonoDevelop.Ide.TypeSystem.TypeSystemService Void FileService_FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:02.6945364 - MonoDevelop.Unity.Project.NodeBuilders.UnityFileNodeBuilder Void OnFileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:01.6960784 - MonoDevelop.Projects.FileStatusTracker`1[MonoDevelop.Projects.WorkspaceItemEventArgs] Void HandleFileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:01.0363946 - MonoDevelop.PackageManagement.SdkProjectReloadMonitor Void FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.5363695 - MonoDevelop.PackageManagement.NuGetConfigFileChangedMonitor Void FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.4974428 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectNodeBuilder Void OnSystemFileCreated(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.4228951 - MonoDevelop.PackageManagement.NodeBuilders.ProjectPackagesProjectNodeBuilderExtension Void FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.4220673 - MonoDevelop.Ide.Gui.DocumentRegistry Void HandleFileServiceChange(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.4020246 - MonoDevelop.PackageManagement.Commands.PackageManagementStartupHandler Void FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.3517315 - MonoDevelop.Ide.TypeSystem.MonoDevelopAnalyzer Void OnUpdatedOnDisk(System.Object, System.EventArgs) 00:00:00.2972448 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ShowAllFilesBuilderExtension Void OnSystemFileDeleted(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.1205992 - MonoDevelop.Ide.RootWorkspace Void CheckFileRemoved(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0819609 - MonoDevelop.Projects.DotNetProject Void OnFileRemoved(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0697519 - MonoDevelop.Ide.Editor.EditorConfigService+ConventionsFileManager Void FileService_FileChanged(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0325364 - MonoDevelop.Unity.Project.NodeBuilders.UnityFileNodeBuilder Void OnFileCopied(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0199356 - MonoDevelop.Ide.DesktopService Void NotifyFileRemoved(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0117852 - MonoDevelop.Ide.Gui.Documents.DocumentManager Void CheckRemovedFile(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0025223 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectNodeBuilder Void OnSystemFileDeleted(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0024015 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ShowAllFilesBuilderExtension Void OnSystemFileRenamed(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0016862 - MonoDevelop.Ide.Editor.EditorConfigService+ConventionsFileManager Void FileService_FileRemoved(System.Object, MonoDevelop.Core.FileEventArgs) 00:00:00.0012199 - MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectFolder Void OnFileRenamed(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0010056 - MonoDevelop.Debugger.DebuggingService Void FileService_FileRenamed(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0009376 - MonoDevelop.Ide.Gui.Documents.DocumentManager Void CheckRenamedFile(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0006533 - MonoDevelop.Ide.Editor.EditorConfigService+ConventionsFileManager Void FileService_FileMoved(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0004185 - MonoDevelop.Ide.DesktopService Void NotifyFileRenamed(System.Object, MonoDevelop.Core.FileCopyEventArgs) 00:00:00.0003588 - MonoDevelop.Ide.RootWorkspace Void CheckFileRename(System.Object, MonoDevelop.Core.FileCopyEventArgs) ```
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs45
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs2
2 files changed, 35 insertions, 12 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index cf85618ebe..d103fe3864 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -548,16 +548,28 @@ namespace MonoDevelop.Projects
get { return LanguageBinding.SupportsPartialTypes; }
}
- void CheckReferenceChange (FilePath updatedFile)
+ void CheckReferenceChange (FileEventArgs updatedFiles)
{
- for (int n=0; n<References.Count; n++) {
+ int done = 0;
+ foreach (var item in updatedFiles) {
+ // HACK: Don't like this, but we need it for now.
+ if (!item.FileName.HasExtension ("dll"))
+ done++;
+ }
+
+ for (int n=0; n<References.Count && done != updatedFiles.Count; n++) {
ProjectReference pr = References [n];
if (pr.ReferenceType == ReferenceType.Assembly && DefaultConfiguration != null) {
- if (pr.GetReferencedFileNames (DefaultConfiguration.Selector).Any (f => f == updatedFile)) {
- SetFastBuildCheckDirty ();
- pr.NotifyStatusChanged ();
+ foreach (var fileName in pr.GetReferencedFileNames (DefaultConfiguration.Selector)) {
+ if (Contains (updatedFiles, fileName)) {
+ done++;
+ SetFastBuildCheckDirty ();
+ pr.NotifyStatusChanged ();
+ break;
+ }
}
- } else if (pr.HintPath == updatedFile) {
+ } else if (Contains (updatedFiles, pr.HintPath)) {
+ done++;
SetFastBuildCheckDirty ();
var nr = pr.GetRefreshedReference ();
if (nr != null)
@@ -565,6 +577,19 @@ namespace MonoDevelop.Projects
}
}
+ static bool Contains (FileEventArgs args, FilePath fileName)
+ {
+ if (fileName.IsNullOrEmpty)
+ return false;
+
+ foreach (var arg in args) {
+ if (arg.FileName == fileName)
+ return true;
+ }
+
+ return false;
+ }
+
// If a referenced assembly changes, dirtify the project.
/* if (DefaultConfiguration != null) {
foreach (var asm in await GetReferencedAssemblies (DefaultConfiguration.Selector))
@@ -587,8 +612,7 @@ namespace MonoDevelop.Projects
return;
base.OnFileChanged (source, e);
- foreach (FileEventInfo ei in e)
- CheckReferenceChange (ei.FileName);
+ CheckReferenceChange (e);
}
@@ -1874,10 +1898,9 @@ namespace MonoDevelop.Projects
/// </summary>
public event EventHandler ReferencedAssembliesChanged;
- private void OnFileRemoved (Object o, FileEventArgs e)
+ private void OnFileRemoved (object o, FileEventArgs e)
{
- foreach (FileEventInfo ei in e)
- CheckReferenceChange (ei.FileName);
+ CheckReferenceChange (e);
}
protected async override Task OnExecute (ProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration, SolutionItemRunConfiguration runConfiguration)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs
index a77dbf985b..4493d8c6f8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs
@@ -625,7 +625,7 @@ namespace MonoDevelop.Projects
if (s != null)
return new string[] { s };
- return new string [0];
+ return Array.Empty<string> ();
}
/*
void AddRequiredPackages (List<string> result, SystemPackage fromPackage)