Hi,
Ich bin derzeit daran nen Crawler als Teil eines größeren Programmes zu schreiben, dabei kommt es vor das man mal gerne über eine Seite ca. 40.000-3.000.000 verschiedene URLS hat, damit diese nicht mehrfach abgefragt werden habe ich sie in ner ArrayList abgespeichert, dann über Contains(Object) auf die Equals methode eine Hashvergleich über einen 4byte integer.
Die Suchzeiten steigen aber nunman wie erwartet nach ner gewissen laufzeit und containergröße an, das geht bei 50.000 Elementen mit ca. 120ms aufwärts.
Jetzt bin ich aber in java nicht so gewandt das ich alle möglichen guten container kenne, kennt jemand von euch einen container mit dem ich da mehr geschwindigkeit bei wachsender datenmenge rausholen könnte? random access brauche ich dabei nicht.
( binärbaum könnte ich mir da gut vorstellen, wie heißen die in java ? )
Ich bin derzeit daran nen Crawler als Teil eines größeren Programmes zu schreiben, dabei kommt es vor das man mal gerne über eine Seite ca. 40.000-3.000.000 verschiedene URLS hat, damit diese nicht mehrfach abgefragt werden habe ich sie in ner ArrayList abgespeichert, dann über Contains(Object) auf die Equals methode eine Hashvergleich über einen 4byte integer.
Java:
synchronized (synchronizeON) {
isInside = (Visited.contains(item) || toVisit.contains(item));
}
Java:
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof mrURL)) {
return false; // different class
}
if (this.Hashcode == ((mrURL) obj).Hashcode) {
return true;
}
return false;
}
Die Suchzeiten steigen aber nunman wie erwartet nach ner gewissen laufzeit und containergröße an, das geht bei 50.000 Elementen mit ca. 120ms aufwärts.
Jetzt bin ich aber in java nicht so gewandt das ich alle möglichen guten container kenne, kennt jemand von euch einen container mit dem ich da mehr geschwindigkeit bei wachsender datenmenge rausholen könnte? random access brauche ich dabei nicht.
( binärbaum könnte ich mir da gut vorstellen, wie heißen die in java ? )
Zuletzt bearbeitet: