automatically adopt size of word cache to available memory

pull/1/head
orbiter 13 years ago
parent ad09b786bf
commit bb8dcb4911

@ -31,14 +31,14 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import net.yacy.document.StringBuilderComparator;
public class OrderedScoreMap<E> extends AbstractScoreMap<E> implements ScoreMap<E> { public class OrderedScoreMap<E> extends AbstractScoreMap<E> implements ScoreMap<E> {
@ -252,4 +252,16 @@ public class OrderedScoreMap<E> extends AbstractScoreMap<E> implements ScoreMap<
} }
} }
public static void main(String[] args) {
OrderedScoreMap<StringBuilder> w = new OrderedScoreMap<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER);
Random r = new Random();
for (int i = 0; i < 10000; i++) {
w.inc(new StringBuilder("a" + ((char) (((int) 'a') + r.nextInt(26)))));
}
for (StringBuilder s: w) System.out.println(s + ":" + w.get(s));
System.out.println("--");
w.shrinkToMaxSize(10);
for (StringBuilder s: w) System.out.println(s + ":" + w.get(s));
}
} }

@ -48,9 +48,12 @@ import net.yacy.kelondro.util.MemoryControl;
public class WordCache { public class WordCache {
// common word cache // common word cache
private static final int commonWordsMaxSize = 100000; // maximum size of common word cache private static final int commonWordsMaxSize = (int) (MemoryControl.available() / 30000); // maximum size of common word cache
private static final int commonWordsMinLength = 5; // words must have that length at minimum private static final int commonWordsMinLength = 5; // words must have that length at minimum
private static OrderedScoreMap<StringBuilder> commonWords = new OrderedScoreMap<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER); private static OrderedScoreMap<StringBuilder> commonWords = new OrderedScoreMap<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER);
static {
Log.logConfig("WordCache", "commonWordsMaxSize = " + commonWordsMaxSize);
}
// dictionaries // dictionaries
private final File dictionaryPath; private final File dictionaryPath;
@ -62,6 +65,7 @@ public class WordCache {
private final TreeSet<StringBuilder> tcid; // the dictionary of reverse words private final TreeSet<StringBuilder> tcid; // the dictionary of reverse words
public Dictionary(final File file) throws IOException { public Dictionary(final File file) throws IOException {
this.dict = new TreeSet<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER); this.dict = new TreeSet<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER);
this.tcid = new TreeSet<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER); this.tcid = new TreeSet<StringBuilder>(StringBuilderComparator.CASE_INSENSITIVE_ORDER);

Loading…
Cancel
Save