Performance website download

Empire Phoenix

Top Contributor
Mein Problem ist, das ich eine Website einfach als Quellcode downloaden will, das funktioniert auch soweit, jedoch arg ineffizient wie ich festgestellt habe mit JVisualVm. (Ich brauche über 50s während ich die selbe Site mit Opera in unter 10 geöffnet bekomme)

Meine Methode sieht wie folgt aus:

Java:
	private void download() throws IOException {
		URL weburl = new URL(sitestring);
		Scanner in = new Scanner(weburl.openStream());
		while(in.hasNextLine()){
			sitecode = sitecode + in.nextLine() + "\n";
		}
		in.close();
	}

Jetzt ist die Frage, welche sinnvollen Lösungen die hoffentlich etwas performanter sind habt ihr als Vorschläge?
 

jule37

Aktives Mitglied
der scanner ist ein kleiner parser, wohingegen der input stream byteweise daten überträgt, ohne deren bedeutung zu kennen. und parsen kostet zeit.

allerdings würde mich auch mal interessieren, wie groß der unterschied ist, also poste es ruhig mal, wenn du es hast :)
 

Empire Phoenix

Top Contributor
Bah, so langsam bin ich echt am aufgeben, weil ich echte probleme habe das ganze sinnvoll zu machen, oder beispiel zu finden die den ganzen Mist hinterher als String umwandeln, weil ich mit nem Bytearray und sowas absolut nichts anfangen kann :/
 

eRaaaa

Top Contributor
Wie siehts hiermit aus?

Java:
	BufferedReader reader = new BufferedReader(new InputStreamReader(
		new URL("http://YOURURL").openStream())); //YOURURL ersetzen
	String line;
	while((line=reader.readLine())!=null){
	    System.out.println(line);
	}
 

Empire Phoenix

Top Contributor
Hm funktioniert zumindest problem schonmal, mehr als meine versuche, aber zeiterparniss wenn man davon überhaupt im rahmen der ungenauigkeiten im web reden kann ist weniger als 10%
 

eRaaaa

Top Contributor
Darf man fragen um welche Seite es sich handelt und was du mit dem Input machst? Ich meine du redest hier von mehreren Sekunden ?! Normal braucht man ja nicht mal eine :> Vllt. liegt das Problem ja auch garnicht beim Lesen, sondern am Bearbeiten?
 

eRaaaa

Top Contributor
Also wenn du dir den String tatsächlich so zusammenbastelst:
Java:
 sitecode = sitecode + in.nextLine() + "\n";

ist es kein Wunder, ich hoffe das war nur ein Beispielcode? Wenn nicht, haben wir den Übeltäter. Benutz einen StringBuilder !

Java:
	BufferedReader reader = new BufferedReader(new InputStreamReader(
		new URL("http://www.kitco.com/").openStream())); // YOURURL
	// ersetzen
	StringBuilder builder = new StringBuilder();
	String line;
	while ((line = reader.readLine()) != null) {
	    builder.append(line).append(System.getProperty("line.separator"));
	}
	System.out.println(builder);
	reader.close();
 
Zuletzt bearbeitet:

Empire Phoenix

Top Contributor
erm ... tue ich ^^, gleich mal mit StringBuilder testen
*zeit vergeht*
joa das war das verbrechen ^^ jetzt ist mal eben die 10 er sekunden stelle verschwunden XD
-> 90% ersparniss..

gut das du nie mein bastelprojekt netzwerkcode gesehen hast ^^
das versendet nen String binär und baut den dann zeichen für zeichen so zusammen ... o_O

Bleibt die Frage, wieso ist ein Stringbuilder soviel schneller?
 

eRaaaa

Top Contributor
Jedes mal wenn du den + Operator bei Strings benutzt, bedeutet das, dass du neue String-Objekte erstellst, weil Strings unveränderbar sind.
 

eRaaaa

Top Contributor
Richtig.Aber wenn du einen String mit + oder der concat-Methode konkatenierst, wird ein neuer String(char-Array) erstellt und zurückgegeben. Der StringBuffer/builder macht das glaub ich etwas eleganter, indem er sich schon zu Beginn ein größeres char-Array erstellt und wenn dieses dann über die Größe hinaus wächst, wird erst ein neues char-Array erstellt.

String.concat()
Java:
    public String concat(String str) {
	int otherLen = str.length();
	if (otherLen == 0) {
	    return this;
	}
	char buf[] = new char[count + otherLen];
	getChars(0, count, buf, 0);
	str.getChars(0, otherLen, buf, count);
	return new String(0, count + otherLen, buf);
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
H Watson-Crick-Complement Performance Allgemeine Java-Themen 18
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
B Performance Messungen Allgemeine Java-Themen 4
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
I Performance - JDBC UPC PoolDataSoure Allgemeine Java-Themen 0
E Lambda filter performance Allgemeine Java-Themen 2
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
R DBUnit Performance Probleme Allgemeine Java-Themen 0
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
S starke performance probleme des forums Allgemeine Java-Themen 10
C Performance Tips Allgemeine Java-Themen 13
A Performance/Speicherplatz-Nutzung bei Tests Allgemeine Java-Themen 6
R Java Performance testen Allgemeine Java-Themen 18
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
V Performance steigern Allgemeine Java-Themen 7
D Reflection-Performance Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
R Collections Performance einer HashMap Allgemeine Java-Themen 26
i<3java [Groovy/Grails](oder auch java) Mögliche Performance Probleme bei Mailversendung Allgemeine Java-Themen 2
D Performance Objektallokation Allgemeine Java-Themen 28
J Java Performance nicht nachvollziehbar Allgemeine Java-Themen 3
I Library für High Performance Mime Type Erkennung Allgemeine Java-Themen 8
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Performance Allgemeine Java-Themen 6
M Performance Allgemeine Java-Themen 5
MQue Performance Methodenaufruf - if Abfrage Allgemeine Java-Themen 19
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
J Performance von Java GUI-Anwendungen Allgemeine Java-Themen 2
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
S Performance und Function Call Depth Allgemeine Java-Themen 6
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
T Performance ArrayList#remove Allgemeine Java-Themen 8
ARadauer Performance Pptimierung -Lesen/Schreiben Allgemeine Java-Themen 10
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
M Listener und Performance Allgemeine Java-Themen 9
P Performance: Ziehen ohne Zurücklegen (große Datenmenge) Allgemeine Java-Themen 10
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S Ursache für schlechte Performance Allgemeine Java-Themen 2
L Java Performance Check Tool Allgemeine Java-Themen 3
S Performance von Comparator Allgemeine Java-Themen 3
egrath Performance Problem mit File-I/O Allgemeine Java-Themen 6
S Performance Problem Allgemeine Java-Themen 11
X Java Performance auf Sun Systemen bzw. generell Allgemeine Java-Themen 4
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
P miese performance bei nem BufferedImage + repaint :( Allgemeine Java-Themen 6
T Performance-Grundlagen Allgemeine Java-Themen 4
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
V Performance Leck finden Allgemeine Java-Themen 3
T Tile Game Performance Allgemeine Java-Themen 32
M Performance enorm langsam Allgemeine Java-Themen 26
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
M Performance: Java zu C/C++ bei Datenbankanwendung Allgemeine Java-Themen 3
Y unnecessary cast & Performance Allgemeine Java-Themen 29
conan2 Performance von paint() Allgemeine Java-Themen 2
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
S Java3D Performance optimieren Allgemeine Java-Themen 5
F Wenn ihr Performance wollt nehmt C++ Allgemeine Java-Themen 39
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
S Performance Test mit JMeter Allgemeine Java-Themen 2
T Performance Allgemeine Java-Themen 8
J Anfängerliste für gute Performance? Allgemeine Java-Themen 3
Luma Performance-Problem mit RandomAcces File Allgemeine Java-Themen 4
I Performance bei "String <-> Byte"-Umwandlung Allgemeine Java-Themen 4
I Performance-Probleme bei Schleife Allgemeine Java-Themen 3
C Performance von FOR Schleifen Allgemeine Java-Themen 25
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
O Java Website Stock Bot Allgemeine Java-Themen 3
K Inhalte Parsen von Website Allgemeine Java-Themen 15
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
J Website mit Kundenbereich Allgemeine Java-Themen 1
E Java Website Login Allgemeine Java-Themen 2
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
H HTTP Website-Login Allgemeine Java-Themen 5
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
J Hotel Zimmer Buchungen Website Allgemeine Java-Themen 4
G website programmatisch browsen Allgemeine Java-Themen 2
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
A Website zur Ausnahmeliste hinzufügen (Mac) Allgemeine Java-Themen 3
Javafan01 Website in Java aufrufen Allgemeine Java-Themen 1
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
C php-Website mit Proxy aufrufen Allgemeine Java-Themen 6
L Seite einer Partner Website neu laden Allgemeine Java-Themen 1
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
K Socket SocketIO Website nicht erreichbar! :( Allgemeine Java-Themen 1
L Login auf website per Java Allgemeine Java-Themen 13
Ananaskirsche Website mit Browser-Check aufrufen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben