2

Closed

Performance issue on big solutions

description

Environment: W7 , VS2010SP1

Big nested git repository with ~5000 files and >10.000 directories (directory depth up to 14).
Git SCP will constanly scan the whole source tree (proven by process explorer) leaving the entires VS unresponsive for over 2 minutes.
The longer the VS solution exists the more often the scan will happen.

Reproducible.
Closed Feb 9, 2012 at 12:16 PM by
fixed in V0.9.1

comments

yysun wrote Oct 25, 2011 at 11:54 PM

The auto refresh mechanism of this plug-in is handy for smaller repository, but it is a problem with large repository. We are adding an options to disable the auto refresh. Then it won't scan the repository unless it is told to.

connex wrote Oct 29, 2011 at 2:45 PM

Short update:
As stated on Github I started working on that issue.
So far I have sucessfully implemented a "refresh" on demand alowing to disable auto refresh in the configuration, and working on on-request-refreshes when files change on disc.

Also fixed a small bug in GitFuleStatusTracker.cs (line 317):
if ((entry != null) && !entry.IsSubtree) // Miraculix 10/25/2011 Fixed a NullreferenceException here

(will submit a patch when the refresh stuff is done)

yysun wrote Oct 29, 2011 at 11:47 PM

Thanks connex!

I was thinking we just needed an if statement in the function public int DirectoryChanged(string pszDirectory) to disable the refresh. It is line 673 of SccProviderService.cs.

connex wrote Oct 30, 2011 at 6:23 PM

Hi yysun,

that's not enough because the tracker-list get cleared on every Refresh() causing a rescan (together with the filename-casing bug this really causes a rescan every 5000 ms). My Idea is, to watch all Directories in a solution seperatly and only rescan that particular part of the the repository on a Changed-Event. AM now trying to get familar with the TreeWalk to find out how to achieve this , and if this is possible at all.

yysun wrote Nov 9, 2011 at 4:58 PM

I pushed a new release V0.8.8. Because it turns out that TreeWalk's performance is really bad. I restored to use GitIndex and Tree classes which are mark as Obsolete. And used git.exe to scan for changed files.

Still need a setting to disable auto-refresh.

yysun wrote Nov 11, 2011 at 9:32 AM

Hi connex, I have pushed to github the code that have an option to disable the auto refresh. You can try to see if it works for you.

yysun wrote Nov 12, 2011 at 1:12 PM

Description of disabling the auto refresh: http://gitscc.codeplex.com/wikipage?title=Auto%20Refresh