10 instructions assembleur de la VM, aka Java_bytecode, il faut ensuite distinguer ce qui est de la VM et ce qui sera natif lors de l'exécution de la VM.
L'exemple de la boucle avec le println est flagrant. Le couple getstatic et invokevirtual ne sont que deux instructions mais derrière se cache un nombre important d'instructions (initialisation de la bibliothèque et de tout ce qui tourne autours, tests internes de la fonction...)
On pourrait faire une VM comportant plusieurs milliers d'instructions, toutes spécifiquement dédiées, et un programme qui comporterait une seul instruction. On ne pourrait pourtant pas prétendre que le programme d'une seul instruction est léger du fait de sa seule instruction. Il peut très bien cacher un code qui mettra des heures à s'exécuter.
Dans le fait, le nombre d'instructions n'est plus représentatif de rien. Il fut un temps où cela pouvait être transcrit en nombre de cycles. Aujourd'hui, les CPU possèdent plusieurs décodeurs d'instruction et peuvent gérer plusieurs instructions simultanément si celles-ci ne pose pas de problème de « chevauchement de registres » (register stall). Le fonctionnement est plus complexe que ça et mes connaissances commencent à dater, le site à voir pour prendre conscience de la complexité d'un CPU est http://www.agner.org/optimize/ .
Pour conclure, le nombre de 10 instruction assembleurs d'une VM n'a pas de pertinence sur la qualité et la quantité de code qui sera réellement exécuté par la machine. Il faut se dire qu'il ne sera sûrement pas constitué que de 10 instructions.
> mais une allocation n'est pas une gestion des objets, héritages et autres, c'est juste ... une allocation
Allouer de la mémoire pour un objet est sans fondement : ce n'est plus la mémoire pour un objet qu'on alloue mais la mémoire pour une structure. Il sera alors à la charge du développeur de créer un système permettant d'utiliser cette structure comme si c'était un objet (j'en connais qui ont fait ça en assembleur). Et pour quelqu'un qui ne veut pas s'embêter avec du bas niveau, c'est totalement loupé.
The capacity of the human mind for swallowing nonsense and spewing it forth in violent and repressive action has never yet been plumbed. -- Robert A. Heinlein
[^] # Re: de quoi tu te plaint ?
Posté par téthis . En réponse au journal la Geste de l'Estudiant.. Évalué à 4.
L'exemple de la boucle avec le println est flagrant. Le couple getstatic et invokevirtual ne sont que deux instructions mais derrière se cache un nombre important d'instructions (initialisation de la bibliothèque et de tout ce qui tourne autours, tests internes de la fonction...)
On pourrait faire une VM comportant plusieurs milliers d'instructions, toutes spécifiquement dédiées, et un programme qui comporterait une seul instruction. On ne pourrait pourtant pas prétendre que le programme d'une seul instruction est léger du fait de sa seule instruction. Il peut très bien cacher un code qui mettra des heures à s'exécuter.
Dans le fait, le nombre d'instructions n'est plus représentatif de rien. Il fut un temps où cela pouvait être transcrit en nombre de cycles. Aujourd'hui, les CPU possèdent plusieurs décodeurs d'instruction et peuvent gérer plusieurs instructions simultanément si celles-ci ne pose pas de problème de « chevauchement de registres » (register stall). Le fonctionnement est plus complexe que ça et mes connaissances commencent à dater, le site à voir pour prendre conscience de la complexité d'un CPU est http://www.agner.org/optimize/ .
Pour conclure, le nombre de 10 instruction assembleurs d'une VM n'a pas de pertinence sur la qualité et la quantité de code qui sera réellement exécuté par la machine. Il faut se dire qu'il ne sera sûrement pas constitué que de 10 instructions.
> mais une allocation n'est pas une gestion des objets, héritages et autres, c'est juste ... une allocation
Allouer de la mémoire pour un objet est sans fondement : ce n'est plus la mémoire pour un objet qu'on alloue mais la mémoire pour une structure. Il sera alors à la charge du développeur de créer un système permettant d'utiliser cette structure comme si c'était un objet (j'en connais qui ont fait ça en assembleur). Et pour quelqu'un qui ne veut pas s'embêter avec du bas niveau, c'est totalement loupé.
The capacity of the human mind for swallowing nonsense and spewing it forth in violent and repressive action has never yet been plumbed. -- Robert A. Heinlein