Posts Tagged “JVM”

Entwickelt man für Android Performance-kritische Anwendungen fühlt man sich schnell in die Anfangszeit von Java zurückversetzt. Man muss auf die ein oder andere “Komfort”-Funktion verzichten, die man von aktuellen Java VMs gewohnt ist. In Android sind diese zwar vorhanden, aber müssen gegen Performance-Einbußen abgewägt werden. Dies liegt vor allem daran, das Android’s Dalvik VM nicht mit aktuellen und hoch optimierten JVMs mithalten kann. In gewissen Punkten erinnert Dalvik an eine VM von Java 1.0 oder 1.1, die vor über 10 Jahren aktuell waren. Viele dieser Punkte hat Google im Dokument Designing for Performance zusammengetragen. Hier finden sich dann unter anderem folgende Ratschläge, die sich leider auch negativ auf die Produktivität und Codequalität auswirken:

  • Man soll vermeiden Objekte zu erzeugen
  • Nativer Code ist wesentlich schneller als Bytecode
  • Man soll getter/setter vermeiden, ebenso enums
  • foreach soll man nur mit Arrays benutzen
  • Man soll final und static benutzen

Den Rest des Eintrages lesen »

Comments Kommentare deaktiviert

Vor ein paar Jahren sich die Entwicklung von CPUs grundlegend verändert: Statt immer höhere Taktraten zu erzielen setzen Prozessorhersteller auf mehrere Prozessorkerne, die parallel arbeiten. Das volle Leistungspotential können damit auch nur noch Programme ausschöpfen, die parallel mit mehreren Prozessen oder Threads arbeiten. Klassische Programmiersprachen wie C, C++ und Java verlangen vom Programmierer, dass sie selbst für die Parallelisierung Sorge tragen (explizite Parallelisierung). Einfacher zu handhaben sind Programmiersprachen die eine implizite Parallelisierung unterstützen, also keine weiteres Zutun seitens des Entwicklers bedürfen. Insbesondere funktionale Sprachen wie Haskell und Erlang sind besonders dafür geeignet, da sich die Programme hier naturgemäß in parallel abarbeitbar Einheiten unterteilen lassen.
Den Rest des Eintrages lesen »

Comments 3 Kommentare »