Question

La justification que je l'ai vu pour Dirons-nous « bâtarde » les bytecode Java dans Android a été la performance. (Je soupçonne qu'il ya une autre raison.) Cependant en changeant les codes d'octets ont-ils pas fait des technologies d'accélération matérielle, comme sans objet Jazelle, et donc en réalité réduit les performances disponibles pour une plate-forme Java Mobile?

Il semble contre-intuitif me sachant que la plate-forme cible est une plate-forme mobile à base d'ARM. Bien qu'il puisse vous donner de meilleures performances sur d'autres architectures de processeurs, il semble cracher au visage d'ARM et Jazelle.

Quelle sorte d'effet quantitatif t-il sur les performances Java?

Est-il réellement améliorer la performance, et si oui, comment?

Quel est l'effet sur d'autres plates-formes? (Par exemple x86, MIPS, bla, bla, bla ...)

Était-ce utile?

La solution

Oui Dalvik rend Jazelle inutile. La seule question est Jazelle était utile de commencer par ou est-ce 90% battage marketing? Un bon compilateur JIT ou AOT (avance) tend à donner une performance bien meilleure que d'essayer d'utiliser des instructions spécialisées. L'approche basée sur le registre des Dalvik est peut-être plus rapide qu'un interprète traditionnel java bytecode, mais si la différence mineure entre celle d'un interprète et d'un JIT. Espérons que l'une des prochaines versions d'Android a un JIT.

Il faut ~ 5-10 ans pour écrire une bonne machine virtuelle avec l'état des éboueurs d'art et optimiseurs. Sun (et Microsoft) ont passé ces années. Google n'a pas. Espérons qu'ils vont continuer à investir dans ce afin qu'un jour le code Java Android n'est pas un 90% plus lent que ce qu'elle devrait être.

Autres conseils

Wikipedia: machine virtuelle Dalvik :

  

Contrairement à la plupart des machines virtuelles et des machines virtuelles Java vrai qui sont des machines pile, la machine virtuelle Dalvik est une architecture basée sur un registre.

     

optimisés pour de faibles exigences de mémoire, Dalvik a des caractéristiques spécifiques qui le différencient des autres machines virtuelles norme:

     
      
  • La machine virtuelle a été aminci pour utiliser moins d'espace.
  •   
  • Dalvik n'a pas juste à temps compilateur.
  •   
  • La piscine constante a été modifiée pour utiliser uniquement les index 32 bits pour simplifier l'interpréteur.
  •   
  • Il utilise son propre bytecode, pas Java bytecode.
  •   
     

En outre, Dalvik a été conçu de telle sorte qu'un dispositif peut exécuter plusieurs instances de la machine virtuelle de manière efficace.

Modifier : Voir Wikipedia: Open Handset Alliance . Le membre fondateur comprend Intel, Motorola, Qualcomm et Texas Instruments. ARM a rejoint un an plus tard en Décembre 2008. Donc, je suppose que cela n'a pas de sens pour ces entreprises comptent sur une technologie propriétaire alors non-membre, lorsque l'objectif était de créer opensource iPhone / Blackberry concurrent.

J'étais en fait l'impression que Dalvik était destiné plus pour l'efficacité de l'espace que l'efficacité de l'exécution. Aussi de Wikipedia:

  

non compressé fichier .dex est généralement de quelques pour cent de plus petite taille qu'un comprimé .jar (Java Archive) provenant des mêmes fichiers .class.

Alors que les téléphones actuels peuvent utiliser un ARM avec le soutien Jazelle, ce n'est pas nécessairement vrai aller de l'avant.

En outre de Wikipedia (avertissement: ouï-dire):

  

Les spécifications publiées sont très incomplètes, étant seulement suffisante pour l'écriture de code du système d'exploitation qui peut prendre en charge une machine virtuelle Java qui utilise Jazelle. Le but déclaré est que seul le logiciel de machine virtuelle Java doit (ou est autorisé à) dépendent des détails de l'interface matérielle. Cette liaison étroite facilite que le matériel et machine virtuelle Java peuvent évoluer ensemble sans affecter d'autres logiciels. En effet, cela donne ARM Holdings un contrôle considérable sur lequel les machines virtuelles sont en mesure d'exploiter Jazelle. Il empêche également JVMs open source d'utiliser Jazelle.

Une fois qu'ils ajoutent une JITter à Dalvik, cela va être un point discutable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top