(19-03-2009, 06:28 PM)Allwise a écrit : Y a pas photo, du code compilé est toujours plus rapide que du code interprété puisqu'au final, ce code interprété va être parsé et va taper sur des fonctions de plus bas niveau (fonctions C pour PHP et certainement pour Java).
En fait pour le PHP:
Code --> passage dans un parser --> bytecode --> passage dans VM --> code machine.
Pour Java:
Code --> compilation --> bytecode --> passage dans une VM --> code machine
Pour C/C++:
Code --> compilation --> code machine
En gras ce qui se passe au runtime.
En utilisant les caches d'opcode de PHP, tu pars du bytecode aussi en php.
Citation : Donc si tu écris directement les fonctions de bas niveau, le "code natif", ça ne peut qu'être plus rapide, quand bien même le code a été précompilé Just in Time. Puis le code intermédiaire obtenu doit encore être traduit en langage machine avant d'être exécuté
C'est le premier résultat de Google Java vs C++ est à priori les arguments sont pas idiots :
http://www.idiom.com/~zilla/Computer/jav...hmark.html
Un des arguments de l'article c'est que des optimisations sur le bytecode, donc au moment du runtime, permettent des gains dans certains cas par rapport à du code machine qui est par définition statique. L'argument c'est qu'au moment où tu écris ton code tu n'est pas au courant de certaines optimisations directement liées à la façon dont le code est utilisée.
Je sais pas si c'est vrai ou faux, c'est des querelles d'expert que je trancherais pas. Mais ça parait plus compliquer que "Java est toujours plus lent que du code compilé". Il y a des benchmarks où c'est faux.
L'article est plutôt "pro Java".
Citation :La machine virtuelle, même avec du code déjà compilé, est aussi une étape supplémentaire avant l'exécution de ce code. L'avantage d'employer une machine virtuelle, c'est surtout qu'on a pas à se soucier de l'architecture de la machine sur laquelle le programme doit tourner. Elle fait ce qu'il faut pour que le programme tourne de la même façon partout. N'empêche que ça alourdit un peu le processus.
En ce qui concerne PHP, c'est son moteur Zend qui s'occupe de traduire le code source et de l'exécuter, mais apparemment il est pas tip top niveau performances...
Pour ça je suis d'accord . Et même entre deux JVM tu peux avoir des gros écarts...