2009-07-20 12 views
29

La giustificazione che ho visto per dirci "Bastardizzare" i bytecode Java in Android è stata la prestazione. (Sospetto che ci sia un altro motivo.) Tuttavia, cambiando i codici byte non hanno reso le tecnologie di accelerazione hardware come Jazelle Moot, e quindi in realtà hanno degradato le prestazioni disponibili per una piattaforma Java Mobile?Android castrare la tecnologia Jazelle di ARM?

Sembra controintuitivo per me sapere che la piattaforma di destinazione è una piattaforma mobile basata su ARM. Mentre potrebbe offrirti prestazioni migliori su altre architetture della CPU, sembra sputare di fronte a ARM e Jazelle.

Che tipo di effetto quantitativo ha sulle prestazioni Java?

In realtà migliora le prestazioni e, in caso affermativo, come?

Qual è l'effetto su altre piattaforme? (Cioè 86, MIPS, bla, bla, bla ...)

+3

+1. Non vedo come questo non sia collegato alla programmazione. –

+2

Jazelle è quasi sempre andato via. Alcuni core implementano appena la funzione entry/exit/undefined-instruction-trap e si basano su una libreria per implementare l'intera operazione, che è più lenta del semplice farlo nel software. – rsaxvc

risposta

16

Sì Dalvik rende Jazelle inutile. L'unica domanda è stata Jazelle utile per iniziare o è il 90% di marketing hype? Un buon compilatore JIT o AOT (ahead of Time) tende a fornire prestazioni molto migliori rispetto al tentativo di utilizzare istruzioni specializzate. L'approccio basato sul registro di Dalvik potrebbe essere più veloce di un tradizionale interprete bytecode java ma se la differenza in minore tra quella di un interprete e quella di un JIT. Speriamo che una delle prossime versioni di Android abbia un JIT.

Ci vogliono ~ 5-10 anni per scrivere una buona macchina virtuale con spazzatura e ottimizzatori allo stato dell'arte. Sun (e Microsoft) hanno trascorso quegli anni. Google non ha. Speriamo che continueranno ad investire in modo che un giorno il codice Java di Android non sia più lento del 90% di quanto dovrebbe.

+0

Non conosco bene le istruzioni Jazelle, ma il concetto applicato a Bytecode sembra logico. Perché i bytecode sono solo un codice macchina per un processore "Mitico". Ci sono problemi di prestazioni con Jazelle? Posso acquistare la compilazione di Before of Time in modo efficiente, perché non è diverso, quindi dicendo che bytescode è una rappresentazione intermedia. È lo stesso concetto di un normale compilatore. E mentre lo stesso vale per JIT, richiede l'utilizzo di cicli extra per farlo mentre si sta eseguendo il codice. – NoMoreZealots

+0

Il mio intento non è quello di contestare la tua risposta, solo per ottenere maggiori informazioni. – NoMoreZealots

+4

Jazelle funziona bene (2-4x rispetto al normale codice byte) ma è ancora 2-4x + più lento di un JIT. Se leggi i giornali Sun HotSpot puoi vedere le ottimizzazioni (funzioni di inlining, eliminazione del sovraccarico delle chiamate virtuali, rimozione della necessità di sincronizzazione, eliminazione delle allocazioni di oggetti, ..) che un JIT moderno può fare eseguendo l'analisi del flusso di codice. Jazelle non può farne nessuna. Jazelles non è male ma se hai la scelta tra un 386, un 486 e un core 2, voglio il core 2. – hacken

4

Wikipedia: Dalvik virtual machine:

differenza della maggior parte macchine virtuali e vera VM Java che si impilano macchine, la Dalvik VM è un'architettura basato su registri.

essere ottimizzato per i requisiti di memoria insufficiente, Dalvik ha alcune caratteristiche specifiche che lo differenziano da altre VM normali:

  • La VM è stata snellita di utilizzare meno spazio.
  • Dalvik non ha un compilatore just-in-time.
  • Il pool costante è stato modificato per utilizzare solo indici a 32 bit per semplificare l'interprete.
  • Utilizza il proprio bytecode, non il bytecode Java.

Inoltre, Dalvik è stato progettato in modo che un dispositivo possa eseguire più istanze della VM in modo efficiente.

Edit: Vedi Wikipedia: Open Handset Alliance. Il membro fondatore include Intel, Motorola, Qualcomm e Texas Instruments. ARM è entrato a far parte un anno dopo, nel dicembre 2008. Quindi, immagino che non fosse logico per queste aziende fare affidamento su una tecnologia proprietaria allora non membro, quando l'obiettivo era quello di creare un concorrente open source iPhone/Blackberry.

+0

Lo prendo per una pura implementazione software, ma Jazelle aggiunge un'altra variabile all'equazione che rende le prestazioni meno taglienti e asciutte su quella piattaforma. – NoMoreZealots

2

In realtà avevo l'impressione che Dalvik fosse destinato più all'efficienza dello spazio che all'efficienza di esecuzione. Anche da Wikipedia:

un non compresso di file.dex è in genere una piccola percentuale di dimensioni più piccole di un compressa .jar (Java Archive) derivato dagli stessi file .class.

Mentre i telefoni attuali possono utilizzare un ARM con supporto Jazelle, questo non è necessariamente vero in futuro.

anche da Wikipedia (attenzione: per sentito dire):

Le specifiche pubblicate sono molto incompleto, essendo sufficiente solo per la scrittura di codice del sistema operativo in grado di supportare una JVM che utilizza Jazelle. L'intento dichiarato è che solo il software JVM deve (o è consentito) dipendere dai dettagli dell'interfaccia hardware. Questa stretta associazione facilita l'evoluzione dell'hardware e della JVM senza influire sugli altri software. In effetti, ciò conferisce a ARM Holdings un notevole controllo su quali JVM sono in grado di sfruttare Jazelle. Inoltre impedisce alle JVM open source di utilizzare Jazelle.

Una volta che aggiungono un JITter a Dalvik, sarà tutto un punto controverso.

+0

L'hype è che un modello basato su registri è pensato per migliorare le prestazioni. Controlla il post di eed3si9n. Ho letto che Jazelle ti offre prestazioni migliori del solo JIT, mi aspetterei che lo stesso valga per JITter. In pratica, non ne sono sicuro, ma so che ARM ha un'intera suite di tecnologia relativa a Java volta a migliorare le prestazioni tra cui operazioni miste JIT/Jazelle, ma che potrebbe essere solo la commercializzazione di BS. – NoMoreZealots

Problemi correlati