Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-dev] Performance issues with indexer/refresh on large scaleproject

Method 1 is what we are doing right now, but I wanted to automate it. Couldn't find where to disable the automatic update from inside my plugin.
Anyway, method 2 sounds even more appropriate, so I'll have a look into that. Jens' code will help in that.

From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Schorn, Markus
Sent: Tuesday, January 26, 2010 7:39 PM
To: CDT General developers list.
Subject: RE: [cdt-dev] Performance issues with indexer/refresh on large scaleproject

you have two choices to avoid having the indexer run in parallel:
Method 1:
* In the preferences: C/C++ - Indexer: uncheck 'automatically update the index',
* Import the project
* Manually rebuild the index for the project
* Reenable automatic updates
Method 2:
* You can programatically participate in the indexer setup and postpone the indexer for a new
   project as long as you want. Look for the class IndexerSetupParticipant, it's java-doced.
It might be a good idea to implement a setup participant in CDT that postpones the indexer-setup
until there are no outstanding refresh operations. You may want to create an enhancement request
for that.

From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Bursian, Achim
Sent: Tuesday, January 26, 2010 4:08 PM
To: cdt-dev@xxxxxxxxxxx
Subject: [cdt-dev] Performance issues with indexer/refresh on large scaleproject
Importance: Low

Hi all,
I'm running into serious performance problems with a ~40k files C++ project (standard make project on Solaris/Sparc with ClearCase as SCC). Importing and indexing the project takes hours, which is at least partly caused by a lot of unnecessary files being opened.
Three questions:
* How can I programmatically disable the automatic indexing for a period of time, and reenable it later (I found that it's faster to do a refresh without the indexer running, and doing a full indexer run afterwards)? I'd try to do that in a startup plugin, which would disable indexing, import the project, refresh everything, then run the indexer. Maybe that could speed up things...
* I would like to exclude a complete part of the project hierarchy from being seen by Eclipse and CDT. I thought the "filter" setting ("Source folder exclusion pattern") on the CDT source folders property page would do just that, but no. I excluded the "test/" folder and some others with the filter, now it is no longer shown in the project explorer. But monitoring the system with Solaris dtrace shows that the whole <projectroot>/test folder hierarchy is still scanned (stat system call) during a refresh, and a lot of files there even get opened (Imakefiles, *.txt, *.xml). This is quite bad, as it contains 20k files that are only testcases and data stuff. Anything I can do?
* Is there any general guideline for setting up such a large scale project with CDT, anywhere?

Back to the top