Domanda

Attualmente sto scrivendo un documento sulla piattaforma Android. Dopo alcune ricerche , è chiaro che Dalvik ha margini di miglioramento. Mi chiedevo, quale pensi che sarebbe il miglior uso del tempo di uno sviluppatore con questo obiettivo?

La compilation JIT sembra quella grande, ma poi ho anche sentito che questo sarebbe di utilità limitata su una macchina con risorse così basse. Qualcuno ha una risorsa o dati che lo supportano?

Ci sono altre opzioni da considerare? Oltre a sviluppare un robusto kit di sviluppo nativo per bypassare la VM.

Per coloro che sono interessati, c'è una lezione che è stata registrata e messa online riguardo al Dalvik VM .

Qualsiasi pensiero benvenuto, poiché questa domanda appare soggettiva chiarirò che la risposta che accetterò deve avere una giustificazione per le modifiche proposte. Qualsiasi dato per il backup, come il miglioramento di Sun JVM quando è stato introdotto, sarebbe un vantaggio enorme.

È stato utile?

Soluzione

  1. Migliore raccolta dati inutili: compattazione al minimo (per eliminare i problemi di frammentazione della memoria riscontrati oggi), idealmente meno intensiva per la CPU nel fare la raccolta stessa (per ridurre i "frame rate del mio gioco risucchiano" i reclami)
  2. JIT, come citi
  3. Abbastanza documentazione che, se abbinato a un NDK, qualcuno sufficientemente pazzo potrebbe compilare il bytecode Dalvik in codice nativo per un'opzione di compilazione AOT
  4. Renderlo separabile da Android stesso, in modo che altri progetti possano sperimentarlo e che i contributi della community possano arrivare in maggiore quantità e con una clip più veloce

Sono sicuro che potrei trovare altre idee se ne avessi bisogno.

Altri suggerimenti

  1. JIT. La roba che non aiuta è un sacco di schifezze. Potresti essere più selettivo sul codice JIT ma avere 1/10 delle prestazioni del codice nativo sarà sempre limitante

  2. GC decente. I moderni garbage collector generazionali non hanno grandi balbuzie.

  3. Migliore analisi del codice. Ci sono molti casi in cui non è necessario effettuare allocazioni / liberazioni, blocchi bloccati e così via. Ti consente di scrivere codice pulito anziché fare ottimizzazioni per migliorare la macchina in

In teoria la maggior parte dei linguaggi di livello superiore (Java, Javascript, python, ...) dovrebbe essere entro il 20% delle prestazioni del codice nativo nella maggior parte dei casi. Ma richiede al venditore della piattaforma di spendere 100s + anni uomo sviluppatore. Sun Java sta andando bene. Ci hanno lavorato anche per 10 anni.

Uno dei principali problemi con Dalvik è la performance, che è terribile, ho sentito, ma una delle cose che mi piacerebbe di più è l'aggiunta di più lingue.

La JVM ha avuto progetti per la comunità che fanno funzionare Python e Ruby sulla piattaforma, e persino linguaggi speciali come Scala, Groovy e Closure sono stati sviluppati per questo. Sarebbe bello vedere anche questi (e / o altri) sulla piattaforma Dalvik. Sun ha lavorato anche sulla macchina Da Vinci, un'estensione di battitura dinamica della JVM, che indica un grande spostamento rispetto alla "lingua unica per tutti" filosofia che Sun ha seguito negli ultimi 15 anni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top