mccae
Senfdazugeber
Huhu,
Ich brauch wiedereinmal Hilfe,...
Es geht um folgendes: Es ist eine Website auszulesen und der Quellcode zu analysieren. Es soll nach einem speziellen Tag gesucht werden und der Text zwischen Anfangs- und Endtag geholt werden.
Dieser Tag kann mehrfach vorkommen...
Die Website gibt aber je nach input bis zu 70000 Zeichen zurück.
Das ganze habe ich bereits hinbekommen, jedoch ist das ganze noch nicht Effizient genug. Der ganze Text wird nämlich geladen und analysiert.
Wie könnte ich nur lesen und speichern ab der ersten Occurence des Tags, bis zum Ende, und dann wieder bis zum Anfang des nächsten?!
Denn ich bin auf das Problem gestoßen, dass der Tag der mit readLine() geholt wird incomplete ist, und erst auf der naechsten Line weitergeht,...
Hier mal mein derzeitiger Code:
In eine Schleife wird das ganze dann durchlaufen und der StringBuilder so bearbeitet:
Kann mir jemand eine Strategie vorschlagen, mit der das Auslesen effizienter funktionieren kann?!
Die Performance ist naemlich sehr schlecht.
Während den Calls von indexOf und delete Methoden des StringBuilders, der wie gesagt bis zu 70000 enthalten kann, kommt es zu inakzeptablen Aufrufzeiten die zwischen einer halben Sekunde und bis zu 5,6,7 Sekunden betragen.
Der String der oben den Wert der aktuellen Line erhält, (String str) wird ja mehrfach benutzt.
Ich weiß ja, dass trotz einer Neuzuweisung der String immer noch im Stringpool verbleibt. Der Stringpool wird afaik nicht vom GarbageCollector erfasst?!
Ich bitte um Hilfe,...
mfg
Martin Conrad Caesar
Ich brauch wiedereinmal Hilfe,...
Es geht um folgendes: Es ist eine Website auszulesen und der Quellcode zu analysieren. Es soll nach einem speziellen Tag gesucht werden und der Text zwischen Anfangs- und Endtag geholt werden.
Dieser Tag kann mehrfach vorkommen...
Die Website gibt aber je nach input bis zu 70000 Zeichen zurück.
Das ganze habe ich bereits hinbekommen, jedoch ist das ganze noch nicht Effizient genug. Der ganze Text wird nämlich geladen und analysiert.
Wie könnte ich nur lesen und speichern ab der ersten Occurence des Tags, bis zum Ende, und dann wieder bis zum Anfang des nächsten?!
Denn ich bin auf das Problem gestoßen, dass der Tag der mit readLine() geholt wird incomplete ist, und erst auf der naechsten Line weitergeht,...
Hier mal mein derzeitiger Code:
Java:
URL url = new URL("http://www.domain.tld?param="+param.toString());
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str = "";
StringBuilder out = new StringBuilder();
while ((str = in.readLine()) != null) {
out.append(str);
}
in.close();
In eine Schleife wird das ganze dann durchlaufen und der StringBuilder so bearbeitet:
Java:
int ind = out.indexOf("<specialtag>");
if(ind<0){
throw new NoTagException();
}
out.delete(0, ind+12);
ind = out.indexOf("</specialtag>");
if(ind<0){
throw new EndlessException();
}
out.delete(ind, ind+13);
Kann mir jemand eine Strategie vorschlagen, mit der das Auslesen effizienter funktionieren kann?!
Die Performance ist naemlich sehr schlecht.
Während den Calls von indexOf und delete Methoden des StringBuilders, der wie gesagt bis zu 70000 enthalten kann, kommt es zu inakzeptablen Aufrufzeiten die zwischen einer halben Sekunde und bis zu 5,6,7 Sekunden betragen.
Der String der oben den Wert der aktuellen Line erhält, (String str) wird ja mehrfach benutzt.
Ich weiß ja, dass trotz einer Neuzuweisung der String immer noch im Stringpool verbleibt. Der Stringpool wird afaik nicht vom GarbageCollector erfasst?!
Ich bitte um Hilfe,...
mfg
Martin Conrad Caesar