• [^] # Re: Performances javascript

    Posté par . En réponse au journal Les jeux arrivent sur la Freebox. Évalué à 1.

    Alors le Tail_Call, c'est en gros une optimisation qui permet de transformer une chaine d'appel recursif en une boucle. Il y a une economie de memoire (en diminuant la taille de la pile necessaire) et une economie de CPU (en remplacant des call par de simple jump). Cette optimisation peut beneficier au bytecode et il n'est pas necessaire d'avoir du JIT pour en beneficier. Par contre, il faut faire attention a la maniere dont on ecrit une fonction recursive, si on veut beneficier de cette optimsation (voir l'exemple de la fonction factorisation).

    Maintenant TraceMonkey fonctionne en sauvegardant une «Trace» de tous le bytecode genere. Lorsqu'il detecte dans cette trace une «zone chaude», il va passer le JIT dessus. Le probleme vient de la detection des «zone chaude» a priori qui ne se fait actuellement que si il y a une boucle explicite. Avec l'optimisation des Tail Call, il serait peut etre possible de detecter certaines «zone chaude», mais je doute que ce soit la bonne solution, etant donnee la difficulte a ecrire des fonctions tail recursive.