tweaked duplicate checking; major speedup

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@943 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Tom Copeland
2002-09-13 18:25:15 +00:00
parent 5a63d1bcdc
commit efd1bdde82
3 changed files with 10 additions and 11 deletions

View File

@@ -25,7 +25,7 @@ public class BatchBuilder {
List batches = new ArrayList();
int currentBatchSize = 0;
int maxBatchSize = 10;
int maxBatchSize = 50;
List wrappers = new ArrayList();
for (Iterator i = occ.getTiles(); i.hasNext();) {

View File

@@ -36,7 +36,7 @@ public class DCPD {
System.out.println("Tokenizing");
job = new Job("java_lang", new Integer((int)System.currentTimeMillis()));
tokenSetWrapper = new TokenSetsWrapper(loadTokens("C:\\j2sdk1.4.0_01\\src\\java\\lang", true), job);
tokenSetWrapper = new TokenSetsWrapper(loadTokens("C:\\j2sdk1.4.0_01\\src\\java\\lang\\ref", true), job);
System.out.println("Tokenizing complete, " + (System.currentTimeMillis()-start) + " elapsed ms");
System.out.println("Writing the TokenSetsWrapper to the space");

View File

@@ -17,12 +17,6 @@ public class DCPDResultsImpl extends TileOccurrences implements Results, Seriali
public void addTile(Tile tile, TokenEntry tok) {
super.addTile(tile, tok);
/*
for (int i=orderedTiles.size()-1; i>=0; i--) {
Tile candidate = (Tile)orderedTiles.get(i);
removeDupesOf(candidate);
}
*/
if (orderedTiles.size() > 1) {
removeDupesOf((Tile)orderedTiles.get(orderedTiles.size()-1));
}
@@ -36,18 +30,23 @@ public class DCPDResultsImpl extends TileOccurrences implements Results, Seriali
}
private void removeDupesOf(Tile largerTile) {
String largeTileSrc = ((TokenEntry)largerTile.getTokens().get(0)).getTokenSrcID();
for (int i=0; i<orderedTiles.size()-1; i++) {
Tile smallerTile = (Tile)orderedTiles.get(i);
String smallTileSrc = ((TokenEntry)smallerTile.getTokens().get(0)).getTokenSrcID();
if (!smallTileSrc.equals(largeTileSrc)) {
continue;
}
outer:
for (int j=0; j<smallerTile.getTokens().size(); j++) {
TokenEntry smallTileToken = (TokenEntry)smallerTile.getTokens().get(j);
for (int k=0; k<largerTile.getTokens().size(); k++) {
TokenEntry largeTileToken = (TokenEntry)largerTile.getTokens().get(k);
if (smallTileToken.getBeginLine() == largeTileToken.getBeginLine() &&
smallTileToken.getImage().equals(largeTileToken.getImage()) &&
smallTileToken.getTokenSrcID().equals(largeTileToken.getTokenSrcID())) {
if (smallTileToken.getIndex() == largeTileToken.getIndex()) {
orderedTiles.remove(smallerTile);
tileToOccurrenceMap.remove(smallerTile);
break outer;