1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Related to 155324, output statistics when tracing indexer.

This commit is contained in:
Markus Schorn 2006-11-29 08:52:21 +00:00
parent 52522d53bf
commit 6f3df88cd1
5 changed files with 65 additions and 38 deletions

View file

@ -27,6 +27,8 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IProblemBinding;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.IIndexFile;
import org.eclipse.cdt.core.index.IIndexInclude;
@ -54,16 +56,27 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask {
protected volatile int fTotalSourcesEstimate= 0;
protected volatile int fCompletedSources= 0;
protected volatile int fCompletedHeaders= 0;
protected int fErrorCount;
protected Map fContextMap= new HashMap();
protected volatile String fMessage;
protected boolean fTrace;
private boolean fTrace;
private boolean fShowStatistics;
private int fResolutionTime;
private int fParsingTime;
private int fAddToIndexTime;
private int fErrorCount;
private int fReferenceCount= 0;
private int fDeclarationCount= 0;
private int fProblemBindingCount= 0;
protected PDOMIndexerTask() {
String trace = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/indexer"); //$NON-NLS-1$
if (trace != null && trace.equalsIgnoreCase("true")) { //$NON-NLS-1$
fTrace= true;
}
fTrace= checkDebugOption("indexer", "true"); //$NON-NLS-1$//$NON-NLS-2$
fShowStatistics= checkDebugOption("pdomtimings", "true"); //$NON-NLS-1$//$NON-NLS-2$
}
private boolean checkDebugOption(String option, String value) {
String trace = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/" + option); //$NON-NLS-1$
return (trace != null && trace.equalsIgnoreCase(value));
}
protected void processDelta(ICElementDelta delta, Collection added, Collection changed, Collection removed) throws CoreException {
@ -190,7 +203,9 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask {
}
fMessage= MessageFormat.format(Messages.PDOMIndexerTask_parsingFileTask,
new Object[]{path.lastSegment(), path.removeLastSegments(1).toString()});
long start= System.currentTimeMillis();
doParseTU(tu, pm);
fParsingTime += System.currentTimeMillis()-start;
}
catch (CoreException e) {
swallowError(path, e);
@ -304,16 +319,28 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask {
ArrayList[] arrayLists = ((ArrayList[]) symbolMap.get(path));
// resolve the names
long start= System.currentTimeMillis();
ArrayList names= arrayLists[2];
for (int j=0; j<names.size(); j++) {
((IASTName[]) names.get(j))[0].resolveBinding();
final IASTName name = ((IASTName[]) names.get(j))[0];
final IBinding binding= name.resolveBinding();
if (fShowStatistics) {
if (binding instanceof IProblemBinding)
fProblemBindingCount++;
else if (name.isReference())
fReferenceCount++;
else
fDeclarationCount++;
}
}
fResolutionTime += System.currentTimeMillis()-start;
}
boolean isFirstRequest= true;
boolean isFirstAddition= true;
IWritableIndex index= getIndex();
index.acquireWriteLock(getReadlockCount());
long start= System.currentTimeMillis();
try {
for (int i=0; i<orderedPaths.length; i++) {
if (pm.isCanceled())
@ -340,6 +367,7 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask {
} finally {
index.releaseWriteLock(getReadlockCount());
}
fAddToIndexTime+= System.currentTimeMillis()-start;
fCompletedSources++;
}
@ -445,4 +473,26 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask {
}
return file;
}
protected void traceEnd(long start) {
if (fShowStatistics) {
String name= getClass().getName();
name= name.substring(name.lastIndexOf('.')+1);
System.out.println(name + " " + getIndexer().getProject().getElementName() //$NON-NLS-1$
+ " (" + fCompletedSources + " sources, " //$NON-NLS-1$ //$NON-NLS-2$
+ fCompletedHeaders + " headers)"); //$NON-NLS-1$
System.out.println(name + " Timings: " //$NON-NLS-1$
+ (System.currentTimeMillis() - start) + " total, " //$NON-NLS-1$
+ fParsingTime + " parser, " //$NON-NLS-1$
+ fResolutionTime + " resolution, " //$NON-NLS-1$
+ fAddToIndexTime + " index update."); //$NON-NLS-1$
System.out.println(name + " Result: " //$NON-NLS-1$
+ fDeclarationCount + " declarations, " //$NON-NLS-1$
+ fReferenceCount + " references, " //$NON-NLS-1$
+ fErrorCount + " errors, " //$NON-NLS-1$
+ fProblemBindingCount + " problems."); //$NON-NLS-1$
}
}
}

View file

@ -21,7 +21,6 @@ import org.eclipse.cdt.core.model.ICElementDelta;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
class PDOMFastHandleDelta extends PDOMFastIndexerJob {
@ -35,9 +34,8 @@ class PDOMFastHandleDelta extends PDOMFastIndexerJob {
}
public void run(IProgressMonitor monitor) {
long start = System.currentTimeMillis();
try {
long start = System.currentTimeMillis();
setupIndexAndReaderFactory();
registerTUsInReaderFactory(changed);
@ -71,14 +69,10 @@ class PDOMFastHandleDelta extends PDOMFastIndexerJob {
if (monitor.isCanceled()) {
return;
}
String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/pdomtimings"); //$NON-NLS-1$
if (showTimings != null && showTimings.equalsIgnoreCase("true")) //$NON-NLS-1$
System.out.println("PDOM Fast Delta Time: " + (System.currentTimeMillis() - start)); //$NON-NLS-1$
} catch (CoreException e) {
CCorePlugin.log(e);
} catch (InterruptedException e) {
}
traceEnd(start);
}
}

View file

@ -18,7 +18,6 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
/**
* @author Doug Schaefer
@ -30,8 +29,8 @@ class PDOMFastReindex extends PDOMFastIndexerJob {
}
public void run(final IProgressMonitor monitor) {
long start = System.currentTimeMillis();
try {
long start = System.currentTimeMillis();
boolean allFiles= getIndexAllFiles();
List sources= new ArrayList();
List headers= new ArrayList();
@ -49,15 +48,10 @@ class PDOMFastReindex extends PDOMFastIndexerJob {
registerTUsInReaderFactory(headers);
parseTUs(sources, headers, monitor);
String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID
+ "/debug/pdomtimings"); //$NON-NLS-1$
if (showTimings != null && showTimings.equalsIgnoreCase("true")) //$NON-NLS-1$
System.out.println("PDOM Fast Reindex Time: " + (System.currentTimeMillis() - start) //$NON-NLS-1$
+ " " + indexer.getProject().getElementName()); //$NON-NLS-1$
} catch (CoreException e) {
CCorePlugin.log(e);
} catch (InterruptedException e) {
}
traceEnd(start);
}
}

View file

@ -21,7 +21,6 @@ import org.eclipse.cdt.core.model.ICElementDelta;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
/**
* @author Doug Schaefer
@ -39,8 +38,8 @@ class PDOMFullHandleDelta extends PDOMFullIndexerJob {
}
public void run(IProgressMonitor monitor) {
long start = System.currentTimeMillis();
try {
long start = System.currentTimeMillis();
setupIndexAndReaderFactory();
// separate headers
@ -73,14 +72,10 @@ class PDOMFullHandleDelta extends PDOMFullIndexerJob {
}
parseTUs(sources, headers, monitor);
String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID
+ "/debug/pdomtimings"); //$NON-NLS-1$
if (showTimings != null && showTimings.equalsIgnoreCase("true")) //$NON-NLS-1$
System.out.println("PDOM Full Delta Time: " + (System.currentTimeMillis() - start)); //$NON-NLS-1$
} catch (CoreException e) {
CCorePlugin.log(e);
} catch (InterruptedException e) {
}
traceEnd(start);
}
}

View file

@ -18,7 +18,6 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
/**
@ -32,8 +31,8 @@ class PDOMFullReindex extends PDOMFullIndexerJob {
}
public void run(final IProgressMonitor monitor) {
long start = System.currentTimeMillis();
try {
long start = System.currentTimeMillis();
boolean allFiles= getIndexAllFiles();
List sources= new ArrayList();
List headers= new ArrayList();
@ -50,16 +49,11 @@ class PDOMFullReindex extends PDOMFullIndexerJob {
registerTUsInReaderFactory(sources);
parseTUs(sources, headers, monitor);
String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID
+ "/debug/pdomtimings"); //$NON-NLS-1$
if (showTimings != null && showTimings.equalsIgnoreCase("true")) //$NON-NLS-1$
System.out.println(indexer.getID()+" indexing time: " + (System.currentTimeMillis() - start) //$NON-NLS-1$
+ " " + indexer.getProject().getElementName()); //$NON-NLS-1$
} catch (CoreException e) {
if (e.getStatus() != Status.CANCEL_STATUS)
CCorePlugin.log(e);
} catch (InterruptedException e) {
}
traceEnd(start);
}
}