Unterschied zwischen Dexopt und Dex2oat?
Google
ist der übergang von der Dalvik
zu ART
(Android Runtime).
Ich versuche zu verstehen, wie es geht, um die Leistung zu verbessern.
Die beste Erklärung, die ich fand, ist das unten stehende Bild:
Einer der wichtigsten Komponente, die sich verändert hat, ist dexopt
zu dex2oat
.
Da ich nicht viel Ahnung über diese, kann jemand erklären die Unterschiede und wie sich das entwickeln wird, um die performance zu verbessern?
Kommentar zu dem Problem
Könnten Sie teilen sich die Quelle dieses Bildes?
InformationsquelleAutor der Frage Gokul Nath KP | 2014-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
dexopt führt einige Optimierungen auf die dex-Datei. Es tut Dinge wie Austausch eines virtuellen invoke-Anweisung mit einer optimierten version, mit der vtable-index, der die Methode aufgerufen wird, so dass Sie nicht haben ausführen die Methode lookup während der Ausführung.
Ergebnis dexopt ist eine odex (optimierten dex-Datei). Dies ist sehr ähnlich wie das original dex-Datei, außer dass es verwendet einige optimierte opcodes, wie die optimierte invoke-virtual instruction.
dex2oat braucht ein dex-Datei und kompiliert. Das Ergebnis ist im wesentlichen eine elf-Datei, die dann ausgeführt werden. Also anstatt bytecode interpretiert wird, der von einer virtuellen Maschine, es hat jetzt nativen code, der ausgeführt werden kann, wird nativ vom Prozessor. Dies wird als AOT (ahead-of-time) - Kompilierung.
Beide tools sind in der Regel bei der Installation auf dem Gerät.
Weiterer Faktor, der zu berücksichtigen ist, dass dalvik verwendet einen JIT (just-in-time) - compiler - was bedeutet, dass es auch in der Lage zu kompilieren bytecode in nativen code. Der wesentliche Unterschied jedoch ist, dass KUNST kompiliert alles vor der Zeit, in der Erwägung, dass nur dalvik kompiliert eine Teilmenge der bytecode mit Heuristiken zur Erkennung der code ausgeführt wurde, am häufigsten, und es kompiliert, während der Ausführung.
InformationsquelleAutor der Antwort JesusFreke