• [^] # Re: logique pour Google

    Posté par (site web personnel, Mastodon) . En réponse au journal Grumpy : un nouveau concurrent à pythran. Évalué à 4.

    Quand tu génères du JavaScript, derrière il y a plusieurs implémentations de l'interpréteur (au moins une par navigateur - WebKit en a plusieurs et passe de l'une à l'autre à la volée pour chaque fonction, selon plusieurs critères). Elles sont parfois très différentes. Du coup, le principe est plutôt de laisser le runtime faire l'optimisation.

    On a un peu la même philosophie quand on génère du bytecode Java: le bytecode standard est pas du tout optimal, en fait il est plutôt éloigné de ce que les machines virtuelles font vraiement. Mais, chaque machine virtuelle vient avec une "surcouche" qui s'occupe de faire l'optimisation qui va bien.

    Cela a un inconvénient: il faut faire cette phase d'optimisation au runtime alors qu'elle aurait pu être faite une fois pour toute à la compilation. Mais ça a un gros avantage: ton code "objet" (bytecode java ou code js généré) sera optimisé pour la machine virtuelle qui l'exécute, même si elle n'existe pas encore lorsque tu écris le code.

    Du coup, il n'est pas nécessaire et parfois même contre-productif de "pré-optimiser" le code js. Tu ne sais pas quelle machine virtuelle va l'interpréter, de toutes façons.