Ben en langage C c'est "compilé" en bytecode natif.
T'as rien compris.
Le problème est de savoir comment fait l'optimiseur pour détecter si 'a' (dans f()) sera toujours à 0 ou non et ainsi appliquer une optimisation. C'est un exemple simpliste.
Exemple :
f(int a) {
while (a) { a-- ; [...] }
}
const int a = 0 ;
f(a) ;
f(a) ;
f(0) ;
Là le compilateur peux remarquer assez facilement que l'appel à f() ne fait rien et peu supprimer les appels à f().
Un autre exemple et là j'attends tes "lumières" :
f(int a) {
while (a) { a-- ; [...] }
}
h(int a) {
while (!a) { a++ ; [...] }
}
int a = 0 ;
g = f ;
p(&a) ;
g(a) ; // a : n'est pas connu à la compilation
a = read(stdin) ; // a : n'est pas connu à la compilation
conpute_it_with(chose_randomly(g,h)) ; // a : n'est pas connu à la compilation et f() n'est peut-être pas appelé...
Là pour savoir si f() est toujours appelé avec en paramètre 0, c'est impossible.
Et si c'est possible avec une compilation "dynamique" j'aimerai que tu m'expliques.
Et quelque chose de plus consistant que "parce que c'est déjà "précompilé" en bytecode"
[^] # Re: Excellent
Posté par 007 . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 0.
Ben en langage C c'est "compilé" en bytecode natif.
T'as rien compris.
Le problème est de savoir comment fait l'optimiseur pour détecter si 'a' (dans f()) sera toujours à 0 ou non et ainsi appliquer une optimisation. C'est un exemple simpliste.
Exemple :
f(int a) {
while (a) { a-- ; [...] }
}
const int a = 0 ;
f(a) ;
f(a) ;
f(0) ;
Là le compilateur peux remarquer assez facilement que l'appel à f() ne fait rien et peu supprimer les appels à f().
Un autre exemple et là j'attends tes "lumières" :
f(int a) {
while (a) { a-- ; [...] }
}
h(int a) {
while (!a) { a++ ; [...] }
}
int a = 0 ;
g = f ;
p(&a) ;
g(a) ; // a : n'est pas connu à la compilation
a = read(stdin) ; // a : n'est pas connu à la compilation
conpute_it_with(chose_randomly(g,h)) ; // a : n'est pas connu à la compilation et f() n'est peut-être pas appelé...
Là pour savoir si f() est toujours appelé avec en paramètre 0, c'est impossible.
Et si c'est possible avec une compilation "dynamique" j'aimerai que tu m'expliques.
Et quelque chose de plus consistant que "parce que c'est déjà "précompilé" en bytecode"