Performance Stringoperationen

Hallo!

Du kannst in deinem Fall (unter Java5) einen StringBuilder anstatt eines StringBuffers verwenden, der ist nicht synchronized und deshalb einen Tick schneller.

Das null setzen von line und in in Zeile (26/27) ist unnötig.

Gruß Tom
 
Zu
newTest.replace

warum nicht einfach ein .delete ?

Und ganz wichtig gu gehst hier in der for über jedes einzelne Zeichen drüber ....benutze bitte ein while, welches testet, ob ab da wo wir zuletzt was gefunden hatten wieder was finden.

Das einzigste was man performisch technisch noch probieren könnte wäre das, aber sonst bin ich auch recht überfragt:

Java:
    public final String decURL(Stringbuffer test){
        System.out.println("Decoding...");
        try {
            return URLDecoder.decode(test.toString());

        } catch (IllegalArgumentException e) {

            e.printStackTrace();

        }
        return null;
    }

Vielleicht wäre es auch hilfreich in den log Ausgaben noch die Zeit hinzu zu nehmen (im Zweifelsfall System.currentTimeMillisSeconds), um zu sehen, was wirklich lang braucht.


Es geht mich zwar nix an...aber für was muss man eine 30MB große Datei URL konform machen?

P.S.: Ich kann bei uns im Geschäft aus gewissen Rahmenbedingungen nur mit Java 1.4 arbeiten
 
Zuletzt bearbeitet:
@Thomas:
Vom String üben Stringbuffer zum Stringbuilder, super. ;) Was für eine Entwicklung, ich werde das auf jeden Fall mal ausprobieren.
Das null setzen hab ich gemacht weil ich gelesen hab das die Garbage Collection dann schneller abläuft wenn man Variablen nach dem gebrauch null setzt.

@Anime-Otaku:
Danke für deine Hilfe, warst ja sehr fleißig in diesem Thread. Ich werde auch deinen Ansatz nochmal einarbeiten und schauen wie's dann aussieht. Die Zeit hab ich bereits in den Logs mit drin aber da brauch ich keine Millisekunden ^^
Die Encode Funktion braucht allein schon 6 Minuten und danach geht's ja erst richtig los.

Das ganze URL Encode brauch ich weil die IT-Primaten hier in der Firma so ein tolles Tool gebastelt haben welches eine Export Funktion bereithält. Allerdings sind so viele Steuerzeichen und falsche Umbrüche darin, das diese so absolut nicht zu gebrauchen ist.
Deswegen muss ich halt erst alle Steuerzeichen raushauen und dann neu formatieren. Kann ich leider nicht ändern, ich würd auch lieber was anderes machen ...
 
Hi !

Also was du noch verbessern könntest weiss ich nicht ... aber für Eclipse gibt es ein tolles Plugin : EclipseColorer. Dabei handelt es sich um einen Profiler. Damit kannst du dein Programm starten und es zeigt dir nach Beendigung z.B. an in welcher Methode sich dein Programm am längsten aufhält und noch viel, viel mehr. Wir haben das jetzt zum ersten Mal in der Firma eingesetzt und sind begeistert, was damit alles zu Tage kommt und man erkennt ziemlich einfach und schnell, wo man ansetzen muss.

http://eclipsecolorer.sourceforge.net/index_profiler.html

Ist sogar relativ simpel zu bedienen.

Gruss,
Krösi
 
Danke kroesi für den Tipp. Ich glaub ich wollte das schonmal installieren habs aber net hinkbekommen. Kann ich das irgendwie mit dem Auto Updater in Eclipse runterladen oder muss ich da selbst Hand anlegen?
 
Hi !

Stimmt, hatte auch Probleme mit Eclipse 3.1, sorry.

Aber es gibt ein gepatchtes Plugin, welches auch mit Eclipse 3.1 (unter WinXP, andere OS hab ich nicht getestet) funtkioniert.
Runterladen kannst du es unter
http://catgufu.mit.edu/bonawitz/eclipse/

Einfach im Plugins-Ordner entpacken und eine neue Profiler-Launch-Configuration für dein Projekt erstellen.

Das Profiling verlangsamt die Anwendung aber zusätzlich nochmal, also nicht die 30mb-Datei benutzen :p

Gruss,
Krösi
 
Also vielen Dank für die ganzen Tipps. Ich benutze jetzt auch den TPTP Profiler. Habs jetzt auch geschafft dass das Programm innerhalb von 2 Minuten für die 30MB Datei durchläuft.
 
Zurück