Jetzt registrieren » Login
« Login

Passwort vergessen?

Feb

9

Android bald 3x so schnell Dank "Dalvik Turbo"?

von Michael Dunstheimer am 09.02.2010 14:12:50 — 4.305 mal gelesen

Um was es bei dieser Sache geht, versuche ich mit einigen Zitaten aus folgendem Wikipedia Artikel klarzumachen:

Die Laufzeitumgebung von Android basiert auf der Dalvik Virtual Machine, einer von Google-Mitarbeiter Dan Bornstein entwickelten virtuellen Maschine.

Die Dalvik VM ähnelt funktional der normalen Java VM, beide führen sogenannten Byte-Code aus.

Anwendungen für die Androidplattform werden ausnahmslos in Java geschrieben, jedoch greifen diese in geschwindigkeitskritischen Bereichen auf zahlreiche in C oder C++ geschriebene, native Bibliotheken zu.

Das dürfte eigentlich schon klar machen, dass die Dalvik VM ein sehr wichtiger Bestandteil von Android ist, und auch für die Geschwindigkeit der ausgeführten Anwendungen zuständig ist.
 

Die Firma Myriad wird auf dem Mobile World Congress in Barcelona den sogenannten "Dalvik Turbo" vorstellen, der die Dalvik VM ersetzen soll. Anwendungen sollen dann bis zu dreimal schneller laufen. Das wäre ein ganz schöner Performance Schub für Android.

Oder um es mal salopp auszudrücken wäre das ja wohl der "Oberhammer".

In der offiziellen (englischen) Pressemitteilung gibt es weitere Infos.
 

Quelle: Myriad

Kommentare

09.02.2010 14:34:34

bitte bitte lass es nicht übertrieben sein! das wäre so geil. bin ja schon jetzt happy mit meinem helden...

09.02.2010 14:36:40

naja das alles auf einmal 3 mal so schnell läuft glaube ich erst wenn ich es selber sehe.

Sicher gibt es bei der jetzigen DalvikVM noch einiges an Optimierungspotential, stellenweise fühlt man sich als Entwickler ja schon in die Anfangszeit von Java zurückversetzt, aber eine Verdreifachung wäre schon heftig.

Wenn das wirklich klappt fehlt ja serienmäßig nur noch Apps2SD und ich wäre wunschlos Glücklich.
Gerade ältere Geräte wie G1 / Magic / Hero / etc. könnten davon enorm profitieren. Nur wird es schätzungsweise selbst wenn das dann in der nächsten Androidversion kommt keine Updates für diese Geräte mehr geben, den die Hersteller wollen ja lieber neue Geräte mit 1,x GHz und massig Speicher verkaufen.

09.02.2010 14:36:49

Ich habe grade erstmal geschaut, wann der MWC überhaupt ist. Ist gar nicht mal mehr so lange hin.
Jetzt fragt sich natürlich jeder, ob das auch für schon vorhandene Geräte gilt, kann man die Dalvik VM "einfach" austauschen?
Noch nichts da, und schon am hoffen und bangen. ;)

3x schneller (bis zu) wäre wirklich... "Oberhammer"... ich greife die Wortwahl mal auf. :D

09.02.2010 14:42:26

@Fabian:

Du hast "Plan" in Sachen Dalvik?

Ich hoffe ich hab nichts (in technischer Hinsicht) grob fahrlässg falsch geschrieben ;-)

Denkst du das ist realistsich? Doppelt so schnell wäre ja schon der Hit. Aber Myriad ist wohl von der Sache überzeugt, sonst würden sie es ja nicht so groß ankündigen.

09.02.2010 14:46:13

Naja, dass "Anwendungen für die Androidplattform ausschliesslich in Java" geschrieben werden, stimmt so nicht ganz. Unter dem Hut von Android steckt eine ganze Menge nativer Code und auch Anwendungen im Market nutzen teilweise die NDK.

"Android applications run in the Dalvik virtual machine. The NDK allows developers to implement parts of their applications using native-code languages such as C and C++. This can provide benefits to certain classes of applications, in the form of reuse of existing code and in some cases increased speed."

Damit lässt sich optimal und hardwarenah entwickeln. Solche Anwendungen sind aber leichter fehleranfällig und die Entwicklungskosten sind höher, als bei so genanntem Managed Code (zwecks Garbage Collection, etc.).

Dass jetzt jemand die DalvikVM (welche eine Anwendung unter Android ist) durch eine eigene Implementierung ersetzen möchte, die bis zu 3 mal so schnell ist, spricht entweder sehr gegen die aktuelle VM, oder für mässig ausgedrückt für übertriebene Übertreibung.

Schade, aber ich hoffe zumindest dass einige der Verbesserungen auch in den Hauptzweig, also die Dalvik VM, einfliessen werden ...

Btw.: Die Behauptung auf deren Seite, dass mit ihrer VM hochperformante Anwendungen möglich sind, ist auch eher eine Marketingsache. Die Möglichkeit, solche Anwendungen laufen zu lassen, sagt nichts über deren Performance aus. Im Übrigen kann eine VM, egal wie gut ihr JIT, etc. ist, nicht einen auf die Hardware speziell abgestimmten Code ersetzen. Wer also _wirklich_ Performance für seine Android-App braucht, der entwickelt mit der NDK.

09.02.2010 14:51:48

Habe das letzte Zitat noch mal komplett oben reingesetzt. Hatte es wohl etwas aus dem Zusammenhang gerissen.

09.02.2010 15:02:48

@Michael
inwiefern ich denke das sowas realistisch ist?

An eine Verdreifachung der Geschwindigkeit glaube ich nicht wirklich.
Aber selbst wenn am Ende nur eine Erhöhung der Geschwindigkeit um den Faktor 1,5-2 rauskommt wäre das noch ein enormer Performance-Schub.

Machbar ist da sicher was. Die normale JavaVM gibts schon seit 1995, die hatte also 15 Jahre Zeit um weiterentwickelt und optimiert zu werden. Die DalvikVM arbeitet im Gegensatz zur normalen JavaVM als Registermaschine, funktioniert also grundsätzlich ein wenig anders. Und da es die DalvikVM erst seit relativ kurzer Zeit gibt ist da wahrscheinlich noch durchaus Potential für Optimierungen da,

09.02.2010 15:08:58

@Fabian:

Das ist so ungefähr das, was ich hören wollte... ;-)

Ich bin ma gespannt...

09.02.2010 15:21:08

@Fabian: In der Pressemitteilung ist die Rede von "bis zu 3 mal so schnell", worauf man auf das "bis zu" achten sollte. Sicherlich ist dies unter gewissen Umständen möglich - da will ich denen keine Lügen unterstellen - aber inwiefern sich diese punktuelle Performancesteigerung im Gesamtergebnis niederschlägt, steht aus. Denn genau das ist die eigentlich wichtige Information und genau die geben sie nicht in ihrer Pressemitteilung.

Ich denke eine Steigerung auf (wohlgemerkt "AUF" und nicht "UM") 1,5 ist im Bereich des Machbaren. Mehr nur punktuell und damit für den Anwender nicht fühlbar.

09.02.2010 15:36:27

Die 3fache Geschwindigkeit wird wohl in internen Labortests erreicht worden sein, mal sehen wie das in der Praxis aussieht.

Aber wenn man Android optimieren will, dann bei der VM, von Geschwindigkeitssteigerungen hier kann ja das gesamte restliche System profitieren.

@Markus: Dalvik Turbo soll Dalvik im Android SDK ersetzen, der Hersteller ist auch in der Open Handset Alliance, das wird also eine offizielle Lösung.

zum Thema Compiler vs Interpreter: Es gibt auch Meinungen, dass ein Interpreter sehr wohl schneller sein kann als ein Compiler, da der Interpreter auch Optimierungen zur Laufzeit vornehmen kann. Gebe dir aber recht generell sind native Programme wesentlich schneller.

09.02.2010 15:37:56

Also "Anwendungen für die Androidplattform werden ausnahmslos in Java geschrieben, jedoch greifen diese in geschwindigkeitskritischen Bereichen auf zahlreiche in C oder C++ geschriebene, native Bibliotheken zu.".

Der Satz ist schon mal ein Widerspruch in sich. Mag sein das es Apps gibt die rein in Java geschrieben sind, aber wie schon geschrieben, wenns wirklich Geschwindigkeit bracht, wird C und C++ genutzt.
Also nehmen wir mal einfach an, geschwindigkeitsunkritische Teile wie die Oberfläche in Java, darunter wo es "rock" C++. Also würde eine Beschleunigung des Java-Teils in so einem Fall nicht soviel bringen. Ausser das sich eben die eh schon unkrituschen Teile schneller werden.

09.02.2010 16:01:23

Hab grad auf engadget: "At the moment it doesn't even include a JIT compiler! (Although apparently they are *finally* working on it.) The garbage collector is also the most basic design possible (mark & sweep)."

Also kann man aus der VM wirklich noch einiges herausholen....

Sicher gibt es auch einiges an Code in C und C++ in Android, das sind aber hauptsächlich Bibliotheken auf die man wieder über Java-API zugreift, plus Kernel+Treiber, die Ebene darüber ist wohl das meiste in Java geschrieben, also die Applikationen die wir sehen. Man darf nicht vergessen, das NDK hat es ja auch nicht von anfang an gegeben.

09.02.2010 16:08:38

@Michael: Ja, das sehe ich exakt genau so. Wenn es tatsächlich um Performance geht, werden diese Teile nativ angesprochen.

@Dominik: Die DalvikVM ist eine (native) Anwendung in Android. Wird diese Anwendung beschleunigt, dann beschleunigen sich (fast) alle Anwendungen, die unter der DalvikVM laufen. Das ist schön, beschleunigt aber nicht das "gesamte System". Viele Hintergrundprozesse laufen nicht in der DalvikVM, sondern direkt nativ auf dem Gerät. So auch Grafikroutinen, die per nativer Bibliothek von der DalvikVM angesprochen werden.

@Dominik: Dass Interpreter mit einem JIT teilweise schnellere Ausführungsgeschwindigkeiten erreichen, als statisch compilierter Maschinencode, stimmt. Es kommt dabei jedoch auf den Programmierstil an. Otto-Normal-Code kann der JIT meisst gut optimieren, da er an sich unoptimiert geschrieben ist. Optimierung heisst jedoch nicht Performance. JITs haben immer eine schlechtere Performanceobergrenze als compilierter, hardwarenaher Code. Für die meissten Anwendungen reicht aber seit gut einem Jahrzehnt die Geschwindigkeit aus, die mit interpretiertem Code erziehlt wird. Daher ist die ganze Performancegeschichte doch eher eine Sache, die nur wenige Entwickler interessieren dürfte, und ebenso nur wenige Anwender spüren werden.

09.02.2010 16:14:18

also ich kann, nur sagen, dass ich das auch für unrealistisch halte... die vm kann etwas schneller werden, ja in manchen speziellen Funktionen sogar 3mal schneller -aber die Leistung merkt man in "echten " Apparat nur wenig , oder nur teilweise...

09.02.2010 16:25:37

Ich verstehe überhaupt nichts von dem, was hier geschrieben wird, weil ich nichts mit der Programmiererei am Hut habe, wage mich aber dennoch mit einer Frage hier rein:

mich bremst doch sogar mit meinem langsamen G1- Prozessor gar nichts wirklich aus, was die Apps angeht. Ausbremsen ´tut mich doch´ das langsame UMTS und zu Hause WLAN. Da kann doch Dan Bornstein so viel an seiner virtuellen Maschine verbessern, wie er will, oder ?

09.02.2010 16:27:05

Hier mal ein Beispiel üblicher firmeninterner Kommunikationsprozesse:

Entwickler zum Abteilungsleiter: Wir haben eine durchschnittliche Steigerung auf plus minus 150% erreicht, wobei es in 85% der Fälle nur einen zusätzlichen Speicheraufwand von 40% gab. In 7% der Fälle lag der Performancegewinn sogar bei 200% - dies entspricht 3 mal so schnell. In 70% der Fälle erreichten wir 60%. Die restlichen 23% funktionierten nicht, oder verlangsamten sich um 20%.

Abteilungsleiter zum Marketing: Die durchschnittliche Steigerung liegt bei soliden 150%. In vielen Fällen erreichen wir sogar eine stabile dreifache Geschwindigkeit. Es sind noch ein paar Fehler drin, aber die bügeln wir bis zum nächsten Milestone aus.

Marketing an Presse: Unser Produkt macht alles bis zu 3 mal so schnell!

09.02.2010 16:28:17

;-)

09.02.2010 16:28:28

@Bodo: Du verstehst es schon sehr gut und bringst es auf den Punkt! ;-)

09.02.2010 16:32:26

Markus - LOL - Deine ´üblichen firmeninternen Kommunikationsprozesse´ ;-))

09.02.2010 16:33:01

@ Markus seit wann arbeitest den du bei uns =P könnte echt gleich hier aus dem Büro kommen

09.02.2010 17:14:29

ja ja, die wir Schweizer ;) machen alles ein bisschen schneller ;)

09.02.2010 18:06:33

Nebeneffekt von 2x schneller ist 2x weniger CPU-Zeit und somit halber CPU-Stromverbrauch für die Dalvik-VM... somit hält der Akku vielleicht so 10%-20% länger ;-)

09.02.2010 18:23:56

@Cyprian ... wenn Du denn kein Berner bist ... ?

09.02.2010 20:37:57

Huiuiui is das schon 'ne lange Diskussion :)

Ich gehe davon aus, dass JIT demnächst in Android Standard wird. Evtl. nicht mehr für 1.5/1.6, aber auf der diesjährigen Google I/O gibt es sogar eine Session dazu:

http://code.google.com/intl/de-DE/events/io/2010/sessions/jit-compiler-androids-dalvik-vm.html

09.02.2010 20:46:18 — geändert am 09.02.2010 20:53:55

Und um den Begriff JIT mal etwas besser für Nicht-Techies zu erklären, bzw. woher das überhaupt kommt.

Normalerweise wird Programmcode in Maschinensprache (Assembler) entwickelt. Naja, eigentlich in höheren Programmiersprachen (C++ zum Beispiel), die aber dann eben Maschinensprache ausspucken. Die Maschinensprache wird von dem Prozessor interpretiert und ausgeführt.

Das Problem: Maschinensprache ist wie der Name schon sagt von Maschine zu Maschine unterschiedlich. Also das Programm, dass auf einer Maschine läuft, läuft nicht unbedingt auch auf der nächsten. Die Maschinen sprechen unterschiedliche Dialekte. C++ Programme zum Beispiel müssen zwar nicht für jede Maschine unbedingt neu programmiert, aber zumindest neu in Maschinencode übersetzt werden.

Java löst dieses "Problem" dadurch, dass es ein einheitliche Sprache anbieten. Früher wurden Programme in dieser einheitlichen Sprache dann von der Java Runtime (also der Laufzeitumgebung, die auf jedem Rechner zuerst installiert werden muss) interpretiert und dann ausgeführt. Java tut quasi das, was die Maschine sonst direkt tun würde... Es tut das, was ihm das Programm sagt. Das was Java tut, ist wiederum in Maschinencode implementiert und wird von Rechner ausgeführt. Das ist einfach ausgedrückt doppelgemoppelt und logischerweise langsamer. Dies muss aber in Kauf genommen werden, da nur so das ursprüngliche Programm auf allen Maschinen unverändert laufen kann - es ist ja in der Java-Sprache, sogenanntem Bytecode, geschrieben und nicht in Maschinensprache.

JIT, Just-In-Time, heißt, dass Java beim allerersten Start der Applikation den Bytecode in Maschinencode umwandelt und dann direkt vom Rechner ausgeführt werden kann. Der Umweg über das Interpretieren durch Java entfällt. Ein JIT-Compiler ist (einfach ausgedrückt) also eine Art Simultanübersetzer.


Alle Techies, Entwickler und Java-Fans werden mich erschlagen. Sorry :)

09.02.2010 21:29:18

Ach.Ich als gelehrnter Fachinformaticker für Anwendungsentwicklung sage: das passt schon.
:-)

09.02.2010 22:16:22

Die Dalvik VM dürfte recht langsam sein, von daher ist hier wirklich was zu holen...

Mit dem NDK kann man keine rein nativen Apps schreiben, Java wird immer benötigt, um zB GUIs zu steuern oder auf bestimmte Events zu reagieren, von daher kann sich eine schnellere VM nur positiv auswirken.

Natürlich wird Android nicht plötzlich 3x schneller, aber ich denke schon dass Android und seine Anwendungen dadurch ein bisschen flüssiger wirken könnten, vor allem wenn mehrere Anwendungen gleichzeitig laufen.

10.02.2010 23:41:37

TRAINSTATION

Neuen Kommentar schreiben:

Du musst Dich einloggen oder jetzt registrieren,
um einen eigenen Kommentar zu schreiben!

Als eigenloggter User kannst Du auch die Reihenfolge der Kommentare ändern.

 
Anzeige

Bookmark / E-Mail

Klicke auf ein Icon, um diesen Artikel zu bookmarken.
» Diesen Artikel per E-Mail versenden

Tags / Themen

Archiv

Android Forum

Allgemeines
Android
Google Nexus Android Devices
HTC Android Devices
Huawei Android Devices
LG Android Devices
Motorola Android Devices
Samsung Android Devices
Sony Ericsson Android Devices
Sonstige Android Devices
Android Tablets
Android Developer Forum

AndroidPIT unterstützen

Gefällt Dir AndroidPIT? Wir freuen uns, wenn Du uns unterstützt. Wie das geht? Klicke einfach auf die unten stehenden Links.

Weiterempfehlen

Gefällt Dir AndroidPIT? Dann empfiehl uns bitte weiter!

Fragen / Hilfe

Du hast Fragen zu AndroidPIT oder willst noch mehr erfahren? Diese Links helfen Dir vielleicht weiter...

  Du liest gerade: Android bald 3x so schnell Dank "Dalvik Turbo"? - AndroidPIT. Alle Zeitangaben in UTC+01:00. Es ist jetzt 10:32 Uhr.