Question

Le Java Virtual Machine Instruction Set fournit des informations sur mnémoniques telles que aaload , aastore ... etc.
Toutefois, ni les cycles cpu que ces mnémoniques prendraient est mentionné et il n'y a aucune info sur la taille de la taille d'octet ou mot de ces mnémoniques.
Toute idée où cette information n'a pu être trouvée?

Était-ce utile?

La solution

La spécification est ce qu'une machine virtuelle Java doit mettre en œuvre pas comment il le fait. Les différentes plates-formes et différentes années JVM de venders comme IBM et Sun utiliseront différentes implémentations de sorte que vous ne pouvez pas assumer quoi que ce soit sur la taille des octets et des cycles de processeur. Si vous voulez vraiment trouver plus d'informations, vous pouvez télécharger la source et Open JDK regarder à travers elle, mais ce n'est qu'une mise en œuvre et vous ne pouvez pas prendre d'autres implémentations auront les caractéristiques exactes mêmes performances.

Autres conseils

Comme déjà mentionné, les informations que vous cherchez est pas là parce qu'il n'existe pas. Outre le fait également mentionné que différentes JVMs peuvent mettre en œuvre des instructions (ou combinaisons d'instructions) différemment, une seule machine virtuelle Java peut également mettre en œuvre différemment.

Ceci est vrai aussi bien pour différentes combinaisons de intstructions (il pourrait être plus efficace de mettre en œuvre des instructions de différentes manières en fonction de la façon dont ils sont utilisés conjointement avec d'autres instructions) et pour différentes occasions d'exécution. Comme la machine virtuelle Java est toujours dans le contrôle de l'exécution de votre programme, il peut (et fait) surveiller le comportement de votre programme et de décider au code réoptimiser qui est exécuté souvent (ou réunion de code d'autres critères pour cette question). Cela peut entraîner, par exemple, votre instruction en cours de traduction dans un certain ensemble d'instructions machine les mille premières fois une fonction est exécutée, et traduit à un autre ensemble le reste des exécutions.

Cette capacité avancée d'optimisation (et d'autres) est la raison pour laquelle l'optimisation du code Java octet est préférable de laisser la machine virtuelle Java et aussi pourquoi, dans certains cas, un programme Java peut être nettement plus rapide que l'équivalent programme C ou C ++ (C et C ++ est normalement seulement optimisé de manière statique alors que Java est optimisé de façon dynamique).

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