Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
HOME 


  UPCOMING
  PREVIOUS
  MATERIALS
 
GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
Java Performance - Workshop

Java Performance - Workshop  
 
 
ABSTRACT
 
 
Java hat ein relativ komplexes Performance-Modell, insbesondere in Anbetracht der Tatsache, dass Java an sich als einfache Programmiersprache gilt.  Compiler und Laufzeitsystem nehmen aufwändige und komplizierte Optimierungen vor, um die Performanz von Java-Anwendungen zu verbessern.  Das hat zur Folge, dass man intuitiv kaum eine verlässliche Aussage über die Performanz eines Java-Programms machen kann.  Das wirkt sich an verschiedenen Stellen ungünstig aus:
  • Bei Design und Implementierung. Es ist bisweilen alles andere als offensichtlich, ob nun diese oder jene Implementierung schneller oder langsamer ist.  Ohne eine Messung, d.h. einen Benchmark, ist häufig keine Aussage möglich.  Das Implementieren eines sinnvollen Benchmarks ist aber wiederum nicht ohne Tücken.  Es ist nämlich gar nicht so einfach, einen sinnvollen Micro-Benchmark zu schreiben, die die Performanz zweier Algorithmen misst und vergleicht.
  • Beim Performance Tuning. Angenommen, ein (fast) fertiges Stück Software ist zu langsam und soll einem Performance Tuning unterzogen werden.  In der Regel ist es unmöglich, auf Anhieb zu sagen, was die Software so langsam macht.  Ohne den Einsatz von Profiling-Tools – also mit Intuition allein - lassen sich die Schwachstellen kaum identifizieren.
In diesem Workshop sehen wir uns beide Aspekte genauer an und probieren sie in der Praxis am mitgebrachten Notebook aus.
  • Micro-Benchmarking. Wir sehen uns an, worauf bei einem Micro-Benchmark in Java geachtet werden muss, damit er verlässliche Messwerte liefert.  Bei einer Virtuellen Maschine mit HotSpot-Technologie ist das eine nicht-triviale Aufgabe und es gibt zahlreiche Gelegenheiten, typische Fehler zu machen.  Um nur ein Beispiel zu nennen: oft fällt genau der Source-Code, der gemessen werden soll, der sogenannten Dead-Code-Elimination zum Opfer.  Dabei wird “toter Code”wegoptimiert, so dass zwar immer noch ein Messergebnis produziert wird, dass aber keinerlei Aussagekraft mehr hat, da nichts Relevantes gemessen wurde. 

  • In dem Workshop erläutern wir diesen und diverse andere Fehler, versuchen uns zur Illustration an einer Fallstudie und geben anschließend Tipps für die Implementierung eines aussagekräftigen Micro-Benchmarks.
  • Performance Profiling.  Wir sehen uns an, wie Profiling-Tools funktionieren und wie man sie einsetzen kann, um sogenannte Performance-Bottlenecks zu finden.  Performance-Bottlenecks sind Stellen im Programm, an denen Performance in nennenswertem Umfang verloren geht und an denen sich deshalb ein Performance-Tuning lohnt.  Dabei sind zwei Arten von Engpässen relevant: Functional Hotspots, d.h. Algorithmen die häufig ausgeführt werden und lange dauern, und Object Creation Hotspots, d.h. Stellen, an denen massenhaft kurzlebige Objekte erzeugt werden.  In beiden Fällen lohnt sich dort ein Tuning. 

  • In dem Workshop besprechen wir typische Strategien für das Profiling und Tuning und probieren beides mithilfe verschiedener Tools an einem Fallbeispiel aus.  Wir erläutern u.a. die Arbeitsweise von Profiling-Tools, weil der Einsatz des Tools zu irreführenden Verzerrungen der Messergebnisse führen kann, die man kennen sollte, damit die Messergebnisse eines Profilings korrekt interpretiert werden.
Für die Durchführung des Praxisteils werden die Teilnehmer gebeten, ihre Notebooks mitzubringen.   Die notwendige Software wird vorab zur Vorbereitung des Workshops zum Download bereit gestellt, kann aber auch später im Workshop noch ad hoc installiert werden.
 
 
PREREQUISITES

 
 
Level: intermediate / advanced
Duration: half day
Prerequisites: Attendants should be familiar with Java.
Presented at: W-JAX 2007 , München, Germany, November 2007
 

If you are interested to hear more about this and related topics you might want to check out the following seminar or skim through some further reading:
Seminars
 
course abstract High-Performance Java
4 day seminar (open enrollment and on-site)
 
  © Copyright 1995-2007 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Conferences/Abstracts/PerformanceWorkshop.htm  last update: 22 Dec 2007