IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

FTL JIT : le nouveau moteur JavaScript d'Apple


Sujet :

JavaScript

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut FTL JIT : le nouveau moteur JavaScript d'Apple
    FTL JIT : le nouveau moteur JavaScript d'Apple
    qui repose sur LLVM et promet de booster les performances de JavaScript

    JavaScript est en plein essor, et les développeurs s’orientent de plus en plus vers le langage pour le développement d’applications complexes. La course est à la vitesse d’exécution du JavaScript chez les éditeurs de navigateurs qui veulent à JavaScript des performances proches de celles des langages natifs

    Après Google avec son moteur V8 ou encore Mozilla avec son moteur SpiderMonkey, c'est au tour d'Apple de se pencher sur le sujet afin d'améliorer et de faire évoluer son JavaScriptCore.

    FTL JIT est un nouveau moteur ECMAScript en cours de développement chez Apple. La nouveauté de celui-ci est l'usage de LLVM (Low Level Virtual Machine) permettant de créer une machine virtuelle plus ou moins au même titre que Java et sa JVM.
    Il y a déjà quelques années, Apple a abandonné GCC pour passer à LLVM (http://llvm.org/).

    Les premiers tests sont encourageants. Vous pouvez vérifier cela en suivant la procédure suivante : https://trac.webkit.org/wiki/FTLJIT. Et l'équipe d'Are We Fast Yet propose des graphiques comparatifs avec les autres navigateurs et leur moteur.

    Apple n’est pas le premier à prendre ce chemin pour améliorer les performances des applications Web. Google avait proposé un plugin pour exécuter du code natif appelé Google NaCl (Google Native Client). De son côté, Alon Zakai, développeur de chez Mozilla avait alors proposé Emscripten, un projet consistant à compiler du code C et C++ en JavaScript. Cette fois-ci, c'est le contraire. FTL JIT est un compilateur Fourth Tier LLVM Just in Time (à la volée) qui compile le JavaScript en code natif.

    La page officielle.


    Et vous ?

    Que pensez-vous de ces nouveaux moteurs JavaScript et de leur utilité ?

    LLVM est-elle la technologie à suivre aujourd'hui ?

  2. #2
    Membre chevronné
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 545
    Points : 2 084
    Points
    2 084
    Par défaut
    Comme on sait tous le moteur V8 fait déjà de la compilation JIT avant d’exécuter, alors il faut d'abord voir ce qu'apporte FTL JIT devant V8. Si FTL est basé sur LLVM, alors l’intérêt serait plutôt de pouvoir compiler certains composants au préalable ou que le navigateur pusse prendre une version déjà compilé du script en cache par exemple et l'utiliser sans avoir à compiler à chaque chargement de la page.

    Ce qui serait plus intéressant dans tout ça c'est la réutilisabilité et la modularité, si par exemple JQuery pourrait être compilé et stocké quelque part dans un serveur, alors si FTL le détecte une référence de scrip dans la page il part chercher la version compilé au lieu de compiler tout le fichier JQuery encours, car sinon on a pas résolu le problème.

    L’intérêt d'un VM comme LLVM c'est ça, qu'en JavaScript on pusse manipuler des programmes déjà compilés sans que le moteur soit obligé de le faire comme ça se passe avec le moteur nashorn de Java 8. Avec le projet Avatar côté serveur qui introduit Avatar.js qui offre le modèle de programmation comme Node.js mais sur la JVM grace à Nashorn, il y a ce gain qui permet d'avoir des composants java déjà compilés et on les réutilise.

    J'espère que LLVM pourra ouvrir la porte au multi-tache en JavaScript dans les navigateurs, car parmi les chose qu'Avatar.js apporte comme nouveauté côté serveur, c'est que le fait que la JVM soit multi-tache alors on peut instancier des Thread et passer des fonction en paramètres avec Nashorn et ces fonctions seront exécutés en parallèles, certes il faut les joindre au thread encours car ECMAScript ne définit pas le concepts de multitâche, mais pour le programmeur ils s'exécuter de façon asynchrone mais chaque Thread peut s’exécuter séparément en parallèle et exploiter le multicore.

    Si vous faites des boucles infinis et vous afficher des choses pour chaque thread vous pouvez voir dans la console des traitement simultanés, ils font de la concurrence. Ainsi, si les Thread font des traitements qui n'ont rien n'avoir des objets que gère le thread encours ils ont une liberté totale et peuvent faire du 100% parallèle, en fonction du nombre de thread et nombre de processeur.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 44
    Points
    44
    Par défaut
    La nouveauté de celui-ci est l'usage de LLVM (Low Level Virtual Machine) permettant de créer une machine virtuelle plus ou moins au même titre que Java et sa JVM.
    Bizarement il est admis que LLVM est très bon pour faire de l'AOT, mais reste trop long et pousse les optimisations trop loin pour être un JIT performant.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/08/2014, 23h31
  2. Réponses: 9
    Dernier message: 24/03/2011, 16h33
  3. Nouveau moteur Mysql. PBXT
    Par berceker united dans le forum Requêtes
    Réponses: 8
    Dernier message: 12/03/2007, 18h37
  4. Comment changer le moteur javascript ?
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/04/2006, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo