Profiling & Performance – Tuning bei RCP-Anwendungen

eclipse
Die RCP-Anwendung, an der ich auf der Arbeit programmiere, reagiert bei größeren Dateien mit einer gewissen Behäbigkeit auf Tastatureingaben. Und wenn der Rechner langsam genug und die Dateien groß genug sind, verlieren auch weniger ungeduldige Leute als ich ihre Nerven. Es war also nach sieben Monaten mal nötig, sich intensiver mit der Performance unserer Applikation zu beschäftigen. Warum wir das nicht schon viel früher gemacht haben?

“The First Rule of Program Optimization: Don’t do it. The Second Rule of Program Optimization (for experts only!): Don’t do it yet.” – Michael A. Jackson (Nein, nicht der Thriller-MJ. RIP :-()

oder auch

„We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.“ (Donald Knuth)

Aber nun war es doch mal nötig, sich damit zu beschäftigen. Einfach drauflos zu optimieren hat natürlich keinen Sinn, man muss zuerst einmal wissen, welche Abschnitte wirklich Zeit kosten. Dabei können einem Profiler-Tools helfen. Wir haben TPTP eingesetzt, um einen Eindruck davon zu bekommen, in welchen Methoden unser Programm einen Großteil seiner Zeit verbringt.
tptp_options
Standardmäßig ignoriert TPTP dabei unter anderem alle Pakete, die mit „org“ beginnen, was in unserem Fall nicht so erwünscht war. Eine zusätzliche Regel, die Pakete unter „org.eclipse.jst.pagedesigner“ explizit miteinzubeziehen, hat dieses Problem für uns gelöst. Da der Overhead für diese Analysen zur Laufzeit enorm ist, ist es allerdings schon sinnvoll, nur innerhalb der Klassen zu testen, an die man wirklich heran kommt. So konnten wir herausfinden, dass der Großteil der Laufzeit beim Einfügen von Zeichen für Code draufgeht, der sich um das Synchronisieren der grafischen Darstellung und die Validierung der Eingabeposition kümmert. Bei der weiteren Entwicklung hat es sich dann als nützlich erwiesen, mit folgendem Code zu prüfen, welche Methoden innerhalb einer offenbar aufwändigen Methode den Großteil der Arbeitszeit in Anspruch nehmen. Denn nur an diesen Stellen möchte man überhaupt etwas ändern. Schließlich bringt jede Änderung das Risiko mit sich, irgendetwas kaputt zu machen;-)


long time = System.currentTimeMillis();
doSomething();
System.out.println("doSomething: "+(time-System.currentTimeMillis()));
time = System.currentTimeMillis();
doSomethingElse();
System.out.println("doSomethingElse: "+(time-System.currentTimeMillis()));

Ein weiteres nettes Tool zum profilen von Java-Applikationen ist visualVM, dass von Sun mit dem JDK mitgeliefert wird. Damit kann man bereits laufende Java-Anwendungen unter die Lupe nehmen. Leider lief es in unserem speziellen Fall nicht schnell genug und lieferte keine relevanten Ergebnisse, aber für viele einfacher aufgebaute Java-Anwendungen ist das eine gute Option.visualvm

Mit Hilfe der Werkzeuge und einigen Aussparung von vermeintlich überflüssigem Code konnten wir die Eingabegeschwindigkeit vielfach erhöhen. Bevor wir diese Änderungen ausliefern, werden wir aber lieber testen, ob wir wirklich nichts kaputt gemacht haben…

NBA Trades vor dem Draft

In der Nacht von Freitag auf Samstag findet der NBA-Draft statt, und um sich für den in eine günstige Position zu bringen, haben einige Teams bereits größere Trades durchgeführt. Randy Foye und Mike Miller wurden etwa für Darius Songaila, Etan Thomas, Oleksiy Pecherov und den 5. Pick in diesem Jahr von Minnesota nach Washington D.C. geschickt. Ich wundere mich, dass dem 5. Pick scheinbar ein so hoher Wert zugesprochen wird, denn angeblich soll es sich um einen recht schwachen Jahrgang handeln.

Die Spurs haben eine Verjüngerungskur begonnen und Verteidigungsexperte Bruce Bowen sowie die Big Men Kurt Thomas und Fabricio Oberto für den Swingman aus Milwaukee, Richard Jefferson getauscht. Oberto wurde von den Bucks gleich gegen Amir Johnson nach Detroit weiterverschifft.

Weitere NBA-News gibt es auf RealGM.

Verzeichnis auf dem Webserver mit Passwort schützen

Folgendes Szenario: Ein mittelständisches IT-Beratungsunternehmen möchte sein aktuelles Produkt Kunden und Mitarbeitern auf einem Webserver zum komfortablen Download anbieten, möchte aber nicht, dass es einfach Jedermann herunterladen kann. Rein pragmatisch betrachtet reicht es unter Umständen erstmal, den Link zur Datei nur ausgewählten Empfängern zukommen zu lassen, aber besser fühlt man sich als Berufspessimist (Programmierer), wenn das ganze durch ein Passwort geschützt ist.

Mit Hilfe von .htaccess-Dateien ist es möglich, bestimmte Verzeichnisse und die darin liegenden Dateien nur nach korrekter Eingabe von Benutzer//Passwort anzuzeigen.

Auf dem Webserver benötigt man zwei Dateien (Die Werte in eckigen Klammern müssen natürlich entsprechend ersetzt werden):


# .htaccess:
AuthType Basic
AuthName "Name_der_Firma-Download"
AuthUserFile [ABSOLUTER_PFAD_ZUM_USER_FILE]
Require valid-user

und


# .users
[name]:[verschlüsseltes_passwort]

Wichtig ist natürlich, dass die .htaccess-Datei in dem Ordner liegt, der durch den Login geschützt werden soll. Der Wert, den man für das verschlüsselte Passwort eintragen muss, lässt sich mit Hilfe des folgenden Links bestimmen: SelfHTML-Beschreibung zu htaccess.

Nun bleibt nur noch das Problem, den absoluten Pfad korrekt einzutragen. Wenn man einen einfachen Webhosting-Service benutzt, braucht man diese Information sonst meistens nicht. Mit folgendem PHP-Script bekommt man diese Info:


<?php
// get_path.php
echo $_SERVER['DOCUMENT_ROOT'];
?>

NBA Saison vorbei..wie geht’s weiter?;-)

Die Lakers konnten sich 4:1 gegen die Orlando Magic durchsetzen und damit ihren 15. Titel sichern. Für den gemeinen Basketballfan bedeutet das Ende der NBA-Playoffs den Beginn der Saure-Gurken-Zeit. Wobei, ein paar Events gibt es schon, auf die man sich freuen kann:

  • Das BBL-Finale zwischen Bonn und Oldenburg läuft noch, und wird sogar Live auf Eurosport übertragen:
    • Spiel 2: Do, 18.06.09 um 21:00 h
    • Spiel 3: So, 21.06.09 um 16:30 h
    • Spiel 4: Di, 23.06.09 um 18:30 h

    Vom ersten Spiel habe ich die zweite Halbzeit gesehen, und das war richtig guter Basketball, und etliche EX-NBA-Spieler standen auf dem Parkett. Ich war positiv überrascht:) Spannend bis zum Schluss; Bonn hatte dank Bowman und einem unglaublich treffsicheren Ken Johnson am Ende die Nase vorn.

  • NBA Draft am 25. Juni. Blake Griffin wird von den Clippers sicherlich an Nummer 1 gepickt werden, aber sonst scheint dieses Jahr vieles möglich zu sein.
  • Die Basketball-EM der Männer findet dieses Jahr in Polen statt. Anfang August kämpfen unter anderem Italien und Frankreich um den letzten Freien Platz im Turnier, am 7. September beginnt dann die eigentliche EM. Ich hoffe mal, dass irgendein Fernsehsender in Deutschland zumindest ein paar Spiele zeigt…Die EM der Frauen läuft bereits, aber wird offenbar nicht im Fernsehen übertragen.
  • Vom 10. zum 19. Juli findet die NBA Summer League in Los Vegas statt. Die Preseason müsste dann Anfang Oktober beginnen, und ab November geht ja dann zum Glück auch die nächste NBA-Saison wieder los;-)

Über Euch – Review

Tracklist von Über Euch

Tracklist von 'Über Euch'

Anfang Mai schrieb ich ja bereits über das neueste Release von Eliquez & Matyes, nun will ich endlich mal das Review dazu ergänzen.

Seit „Unter Uns“ sind einundhalb Jahre ins Land gegangen, in denen sowohl Matyes wie Eliquez jeweils ein Soloalbum und ein Mixtape mit ihren jeweiligen Crews (Action Connection bzw. VGH) aufgenommen haben. Gelegenheit, an ihrer Technik zu feilen gab es also genug, und das hört man dem neuen Release auch an. Gerade Matyes hat einige zerstörerische Battle-Parts, wie etwa auf „Stand up“ oder „Über Euch Part II“ am Start. Überhaupt ist das neue Werk im Vergleich zu „Unter Uns“ battle-lastiger geworden. Die Mischung zwischen Battlerap, deepen Songs und humorvollen Thementracks ist meiner Meinung nach gut gelungen. Besonders hervorzuheben ist dabei das einfühlsame „Nicht drin“. Ganz schön viel Lebensweisheit für zwei so junge Kerle;-) Wie schon gewohnt haben Eli und Matyes auch bei diesem Album wieder nur die feinsten Beats gepickt. Musikalisch wird hingegen relativ wenig experimentiert – Ausflüge in die Reggea-, Rock- oder Elektro-Ecke sind nicht wirklich zu finden.

Fazit: Ein überzeugendes Collabo-Album, das Apettit macht auf die nächsten Releases aus Hannover.

BBL Halbfinale

In den Playoffs der BBL haben sich sowohl die Frankfurt Skyliners wie MEG Göttingen leider schon in der ersten Runde verabschiedet. So spielen im Halbfinale also Alba Berlin gegen die Telekom Baskets(Bonn), und die „Brose Baskets„(Bamberg) gegen die „EWE Baskets„(Oldenburg). Da waren ja einige Leute richtig kreativ;-)
Erinnert mich an College-Basketball, wo ständig irgendwelche „Wildcats“ gegeneinander antreten:-P

One Love 2009

Ich war bisher fast nie auf irgendwelchen Festivals oder Konzerten. Es hat mir Musik eigentlich immer nur aus ein paar Dateien auf meinem MP3-Player. Aber mein Bruder Mathias und Elias konnten mich dann doch überreden, auf dem One Love Festival in der niedersächsichen Weltmetropole Hannover vorbeizuschauen. Obwohl ich nicht die ganzen 11 Stunden durchgehalten habe, hat sich der Besuch doch gelohnt. Schon am Freitag abend spielten Maeckes und Plan B ihr Rap-up-Comedy-Stück „Zimmer 601“ in einem leider vollkommen überfüllten Raum. Die beiden können nicht nur rappen, sondern sind auch gute Schauspieler und hervorragende Entertainer. Da wir lange auf Einlass warten mussten, blieb Zeit, Fotos zu schießen 😉
posing1s
Von links nach rechts: uzak, Beatzebs, Philly Big Willy, Benuz, Matyes, Goot.

Am Samstag wurde dann in einem stillgelegten Schwimmbecken das eigentliche Festival abgehalten. Hosts waren die beiden Hannoveraner Beneluxus und Atze M, die einige Hochkaräter präsentieren konnten:

morlockk
Morlockk Dilemma und Hiob aka V-Mann

damion1
Damion Davis, der eine beeindruckende Show abgeliefert hat.

damion2
Wieder Damion Davis, der hoch hinaus wollte, um seinen Track „Rooftops“ zu präsentieren.

orsons
Die Orsons, also Maeckes, Tua, Kaas und Plan B.

casper
Casper mit seinem Backup Affenboss.

stieber_twins
Stieber Twins

Von einigen anderen Acts, wie Savas und Havoc von Mobb Deep, habe ich keine vernünftigen Fotos machen können. Und dann war ich zwischendurch weg, um etwas Basketball zu spielen;-) Es war auf jeden Fall mal interessant, die Künstler, die ich sonst nur als Lieferanten von MP3-Dateien kenne, mal live zu erleben:D

NBA Finals: Lakers gegen …Orlando

Wer hätte das gedacht? Orlando hat vor der Saison wohl kaum ein Experte auf der Rechnung gehabt. Während die Cavs sich mühelos durch die beiden ersten Runden sweepten, mussten die Magic, deren Point Guard Jameer Nelson die ganzen Playoffs über verletzt war und ist, sowohl gegen die Underdogs aus Philly wie die Garnett-losen Titelverteidiger aus Beantown einige Federn lassen. Im Conference Final hingegen konnten sie sich überraschenderweise gegen die haushohen Favoriten aus Ohio durchsetzen. Während LeBron einige denkwürdige Spiele abliefern konnte, kamen die Roleplayer der Cavs nie wirklich in diese Serie. Dwight Howard, Rashard Lewis, Hedo und Co haben es jetzt hingegen mit dem auf dem Papier stärksten Team der letzten Jahre zu tun: Kobe Bryant, Pau Gasol, Lamar Odom, Andrew Bynum, Ariza und die beiden Point Guards Fisher und Farmer bilden schon ein beeindruckendes Lineup.

Mein Tipp: LA gewinnt mit 4:3. Aber mich würde es auch nicht mehr besonders überraschen, wenn die Magic die Überraschung perfekt machen….

Nutzlose Statistik: „Beliebteste“ Wochentage

Würde ich eine Umfrage starten, welche Wochentage am beliebtesten sind, würden wohl Samstag und Sonntag ganz vorne landen, und Montag ganz am Ende. Meine Vorgehensweise war aber natürlich viel objektiver: Ich habe Google die Anzahl der Treffer zählen lassen.

wochentage
Ich bin überrascht, wie eng die Ergebnisse zusammenliegen. Da z.B. „Montag“ sowohl der Name einer deutschen Rockband wie auch der Nachname des Helden aus Fahrenheit 451 ist, hätte ich erwartet, dass die Anzahl der Treffer sich deutlicher unterscheiden.
wochentage2
Wenn man die gleichen Abfragen für die englischen Wochennamen macht, bekommt man recht ähnliche Ergebnisse: Montag und Freitag scheinen die populärsten Wochentage im Internet zu sein:-)

Eliquez & Matyes- Über euch

uber-euch-vorne2

Mein Bruder Matyes und unser gemeinsamer Homie Eliquez haben gerade ihr neues Mixtape „Über euch“ zum Download zur Verfügung gestellt. Das Release ist der Nachfolger von „Unter uns“, das die Beiden in 2007 veröffentlicht haben. Ich habe selbst noch nicht reingehört, aber ich bin gerade dabei, es auf mein iPhone zu laden und werde es mir möglichst bald anhören.

Der Download-Link ist hier zu finden:
Download Über euch

PS: Die Titel „Über euch“ und „unter uns“ kann man (auch) so verstehen: „Ihr seid unter uns„, denn „Wir stehen über euch„. Eine Message an all die Whack MCs da draußen;-)