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 :

asm.js s�approche des performances du code natif C/C++


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    R�dacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activit� : Consultant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par d�faut asm.js s�approche des performances du code natif C/C++
    asm.js s�approche des performances du code natif C/C++
    Mozilla optimise son sous-ensemble de JavaScript

    JavaScript jouit d�une grande popularit�. Le langage de script est devenu une plateforme incontournable pour le Web.

    Cependant, il souffre de quelques faiblesses, notamment ses performances par rapport aux langages de d�veloppement d�applications natives.

    Pour pallier � cela, Mozilla a d�velopp� asm.js, un sous-ensemble de JavaScript, dont le but est de maximiser les performances du langage de script pour le Web.

    D�apr�s la description de Mozilla, asm.js est � purement - du code JavaScript � sp�cialement con�u �, qui est compil� en langage natif C/C++ avec emscripten avant ex�cution. Avec asm.js, les d�veloppeurs peuvent �crire du code C/C++ et l�ex�cuter dans le navigateur gr�ce � emscripten.

    Initialement, le code asm.js ex�cut� avec un navigateur standard comme Chrome pouvait �tre dix fois plus lent que du code natif. Gr�ce � des optimisations, la fondation Mozilla avait r�ussi � rendre le code asm.js environ trois fois plus lent que du code natif en f�vrier, et deux fois plus lent en juin.

    L�organisme ne s�est pas arr�t� en si bon chemin, et d�voile aujourd�hui les nouvelles performances de sa solution. Gr�ce � des changements apport�s � la fa�on dont les virgules flottantes sont manipul�es, asm.js est d�sormais au pire lent de 1,5 fois par rapport au natif.


    asm.js pour fonctionner dans un navigateur n�cessite un support explicite du moteur JavaScript. Depuis Firefox 22, Mozilla a activ� le support de asm.js dans son moteur SpiderMonkey.

    Source : Mozilla


    Et vous ?

    Que pensez-vous de asm.js ?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si d�boguer est l�art de corriger les bugs, alors programmer est l�art d�en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre probl�me, on trouve la moiti� de la solution

  2. #2
    Expert confirm�

    Avatar de Francis Walter
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2012
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : B�nin

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 2 315
    Par d�faut
    moi je dis juste qu'avec le temps, Mozilla reussira a reduire la lenteur a 0 avec un peu plis d'efforts.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Pas compris du tout l�int�r�t de tout �a.

    Quelqu'un est-il capable de me l'expliquer ?

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par d�faut
    Citation Envoy� par Hinault Romaric
    D�apr�s la description de Mozilla, asm.js est � purement - du code JavaScript � sp�cialement con�u �, qui est compil� en langage natif C/C++ avec emscripten avant ex�cution. Avec asm.js, les d�veloppeurs peuvent �crire du code C/C++ et l�ex�cuter dans le navigateur gr�ce � emscripten.
    En fait c'est tout le contraire.
    Le code asm.js n'est pas compil� en C/C++, mais directement en code machine et enscriptem ne permet pas du tout d'ex�cuter du javascript.

    C'est le code C/C++ qui est compil� via enscriptem en code javascript simplifi�(asm.js). Cette op�ration est faite par le d�veloppeur qui int�grera le code g�n�ra sur son site, pas par le navigateur.
    Ce code javascript pourra donc etre charg� et execut� de mani�re efficace par tous les navigateurs. Cependant sur les navigateurs optimis�s pour le asm.js, il est compil� en code machine en AOT (en une seule fois contrairement au JIT qui est compil� a la vol�e) ce qui permet des performances proches du natif.

    Citation Envoy� par Faridsarl
    moi je dis juste qu'avec le temps, Mozilla reussira a reduire la lenteur a 0 avec un peu plis d'efforts.
    0 surcout, certainement pas. Il restera des choses que le JS m�me limit� ne pourra jamais faire aussi vite que du natif. De plus la phase de compilation JS -> natif co�te quand m�me un peu de temps par rapport a du d�j� pr�-compil�. Mais descendre au pire � 1.5x la vitesse du natif est d�j� un excellent point.
    S'il arrivaient � descendre � 1.2x, �a serait d�j� �norme.
    Citation Envoy� par jojosbiz
    Pas compris du tout l�int�r�t de tout �a.

    Quelqu'un est-il capable de me l'expliquer ?
    Il y a pas mal d�int�r�ts, notamment:
    - Pouvoir faire des applications web efficace avec des performances proches du natif.
    - Pouvoir d�velopper des applications web avec des langages plus structur�s que le Javascript
    - Pouvoir r�utiliser facilement les nombreux code C/C++ utilis�s dans les application bureau pour des applications web

  5. #5
    Membre habitu�
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 13
    Par d�faut
    Pas compris du tout l�int�r�t de tout �a.

    Quelqu'un est-il capable de me l'expliquer ?
    En fait, les applications natives sont celles que tu installes sur l'ordinateur. On esp�re donc avoir les m�mes performances sur une application web que sur une application bureau.

    Un cas concret: Si un jeu tourne � 60FPS sur ton PC, alors, comme c'est sens� �tre 1.5x plus lent sur le web, le jeu est sens� tourner � 60/1.5=40FPS si tu y joues en HTML5 avec asm.js.

    Apr�s, faut voir � quels domaines �a s'applique. Les jeux-vid�os genre crysis envoie du code assembleur directement � la carte graphique, faut voir si le HTML5 permet de telles optimisations... (+ tout ce qui est utilisation/modification du pipeline graphique, mais comme j'ai jamais touch�)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Ou�, c'est bien ce que je pensai..

    On en revient � essayer de faire entrer un triangle dans un rond avec un marteau tout en se persuadant que le triangle finira bien par devenir un rond...

  7. #7
    dk
    dk est d�connect�
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Par d�faut
    Que pensez-vous de asm.js ?
    Si tous les navigateurs le prennent en charge aussi efficacement, �a va clairement devenir l'avenir du web, les gros atouts �tant les performances et la g�n�ration � partir de c/c++ ; plus besoin de plugins et/ou machine virtuelle �galement, donc moins de probl�mes de s�curit� tout en restant multisupport.

  8. #8
    Membre �m�rite
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    307
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 307
    Par d�faut
    juste une petite remarque emscripten �a permet de compiler du code c/c++ en javascript normal ou en asm.js. les perfs sont meilleurs avec asm.js sous firefox.

    Par ailleurs asm.js est un sous ensemble de js ; donc ca marche sur tout les navigateurs mais ca va tr�s vite que sur firefox.

  9. #9
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2006
    Messages
    380
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 380
    Par d�faut
    J'aimerais bien voir des exemples. Ca a l'air tr�s bien.
    @Uther pour une fois je n'ai pas compris toutes tes explications.

    Si j'ai bien compris : On code en C ou en C++ puis on le compile.
    Ensuite qu'est ce qui se passe ?

    Comment on int�gre �a dans le code ? Comment fais-t-on le lien dans la page html ? On le fait sur le code C compil� (genre dll), ou sur un JS qui passe � la moulinette le code compil� (version simplifi�e) g�n�r� par le fameux asm.js ?

    Ca fait penser � dart. Je me trompe ?

    Ensuite comment fais-ton pour acc�der aux ressources de la page ?
    J'aimerais aussi savoir si on peut coupler �a avec des frameworks comme angularjs

  10. #10
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    Pour moi l'avenir du web passe soit par asm.js soit par NaCl parce que ce sont les deux solutions significatives qui pourraient nous permettre d'utiliser les langages de notre choix avec des performances natives. On n'a pas besoin d'un langage de plus mais d'une solution neutre comme celles-ci.

    Petite pr�f�rence tout de m�me pour NaCl, le poids du code asm.js semble �norme, m�me compress�.


    Citation Envoy� par tralloc Voir le message
    Si j'ai bien compris : On code en C ou en C++ puis on le compile. Ensuite qu'est ce qui se passe ?
    Tu codes en ce que tu veux et un code javascript est g�n�r�. Ce code javascript est licite, 100% compatible mais "bizarre" avec des choses telles que "x|0" ou l'appel � des fonctions "var" ou "box2b" ressemblant � des instructions bytecode.

    Ce code tourne sur un navigateur ne supportant pas asm.js. Toutefois, un navigateur asm.js reconna�t que "x|0" contraint x � �tre un entier, et interpr�tera box2b et var comme �tant des opcodes plut�t que d'appeler ces fonctions. Au final ce code javascript peut facilement �tre v�rifi�, �tre fortement et statiquement typ� et �tre finalement compil� en un code natif tr�s rapide.

    Ca fait penser � dart. Je me trompe ?
    Dart est un nouveau langage. Asm.js est un bytecode neutre, que l'on peut efficacement utiliser comme cible de compilation pour � peu pr�s n'importe quel langage.

    J'aimerais aussi savoir si on peut coupler �a avec des frameworks comme angularjs
    Le gros avantage de asm.js est qu'il est pr�vu pour facilement faire interagir les fonctions javascript avec le code asm.js.

  11. #11
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2006
    Messages
    380
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 380
    Par d�faut
    Merci Don Quiche.
    Ca �claire un peu ma lanterne.
    Je me r�jouis de l'interop�rabilit� du projet.

    Il manquera maintenant un IDE bien b�ton faisant correctement le lien entre les pages html et le code C ou autre (avec de la v�rification d'erreurs, autocompl�tion selon les resources des pages...). Ca risque d'�tre long � venir...

    A moins que l'id�e soit plut�t de cr�er des biblioth�ques de fonctions lourdes � int�grer dans un js classique

  12. #12
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par d�faut
    Citation Envoy� par jojosbiz Voir le message
    On en revient � essayer de faire entrer un triangle dans un rond avec un marteau tout en se persuadant que le triangle finira bien par devenir un rond...
    En effet, mais il faut voir qu'on a pas le choix, JavaScript �tant le seul langage nativement reconnu par tous les navigateurs. L'id�al aurait �t� un bytecode standardis�, malheureusement �a n'est pas pr�t d'arriver.

    Citation Envoy� par dk Voir le message
    Si tous les navigateurs le prennent en charge aussi efficacement, �a va clairement devenir l'avenir du web, les gros atouts �tant les performances et la g�n�ration � partir de c/c++ ; plus besoin de plugins et/ou machine virtuelle �galement, donc moins de probl�mes de s�curit� tout en restant multisupport.
    Ca semble bien parti : m�me si les d�veloppeurs de Chrome se refusent de consid�rer asm.js en tant que vrai sous langage de JavaScript, ils ont introduit dans webkit des optimisations sp�cifiques a emscripten qui font qu'au final le code qui suit les r�gles de asm.js b�n�ficie de ses optimisations.

    Citation Envoy� par tralloc Voir le message
    Si j'ai bien compris : On code en C ou en C++ puis on le compile.
    Ensuite qu'est ce qui se passe ?
    A la base emscripten est un backend LLVM qui g�n�re du JavaScript. Cela signifie qu'il permet de compiler en JavaScript tous les langages qui on un frontend LLVM (le plus connu �tant �tant Clang pour le C/C++).

    Donc pour l'int�gration c'est le d�veloppeur qui compile son code C/C++/D/... en JavaScript une fois pour toute et l�ajoute dans son site. Le navigateur du client l�ex�cutera comme n'importe quel JavaScript, avec des optimisations si il le supporte.

    Citation Envoy� par tralloc Voir le message
    �a fait penser � dart. Je me trompe ?
    Les objectifs sont en effet assez semblable : de meilleures performances et pouvoir utiliser des langages plus stricts.

    Les moyens sont diff�rents : Dart est un nouveau langage, la o� Mozilla propose de choisir son langage qui sera compil� en un JavaScript tr�s optimisable.

    Citation Envoy� par tralloc Voir le message
    Ensuite comment fais-ton pour acc�der aux ressources de la page ?
    J'aimerais aussi savoir si on peut coupler �a avec des frameworks comme angularjs
    je ne connais angular.js que de nom mais comme asm.js permet de faire des fonctions pont entre le code compil� et le JavaScript classique, je suppose que �a doit �tre possible.

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Par d�faut
    Petite pr�f�rence tout de m�me pour NaCl, le poids du code asm.js semble �norme, m�me compress�.
    Mais entre le HTML et NaCl, il y a JS qui effectue le lien. Donc on est toujours contraint d'utiliser du JS, m'a d�ception concernant cette technologie.

    De plus, NaCl est du code compil�. Un comparatif int�ressant serait avec PNaCl, qui comme du asm.js, est destin� � �tre compil� par le navigateur en code natif.

Discussions similaires

  1. optimisation des performances du code PHP
    Par nguim dans le forum Langage
    R�ponses: 2
    Dernier message: 22/02/2014, 13h48
  2. Compiler des .class en code natif
    Par Mobius dans le forum G�n�ral Java
    R�ponses: 21
    Dernier message: 25/01/2011, 13h10
  3. Performances: Code Natif / Manag�
    Par TotorLeCastor dans le forum C++/CLI
    R�ponses: 4
    Dernier message: 21/02/2008, 16h53
  4. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et ant�rieur
    R�ponses: 6
    Dernier message: 06/02/2003, 17h19

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