Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Asm.js le langage intérmédiaire et performant

Par Ismaïl DRISSI Publié le 10/01/2017 à 09:27:15 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Historique

Obtenir un moteur de jeu C ++ fonctionnant en JavaScript, en utilisant WebGL pour le rendu, est un exploit massif et est largement due à la chaîne d'outils que Mozilla a développé pour rendre tout cela possible.

Depuis la sortie d'Unreal Engine 3 pour Asm.js, de nombreuses personnes ont voulu découvrir de quoi il s'agissait réellement. Dans ce document, je vais essayer d'être le plus bref prossible pour répondre aux questions des développeurs de jeux, qui utilisent, sans le savoir parfois, ce langage intermédiaire, pour la compilation de leur plateforme en WebGL.

Jusqu'à l'heure, JavaScript était le langage incontournable et très populaire pour le Web. Cela dit, ce langage souffre de quelques soucis de performance par rapport aux langages de développement d'applications natives.

Pour palier à cela, un sous-ensemble de JavaScript est né : asm.js.

Asm.js, c'est quoi ?

Pour comprendre asm.js et où il s'insère dans le navigateur, vous devez savoir d'où il vient et pourquoi donc il existe ?

Asm.js vient, comme dit dans l'introduction, d'une nouvelle catégorie d'application JavaScript. Cette dernière est conçu par les applications C/C++ qui ont été compilées en JS. Ce tout nouveau genre d'application à été généré par le projet Emscripten de Mozilla.

Emscripten prend le code C / C ++, le transmet par LLVM et convertit le bytecode généré par LLVM en JavaScript et donc en particulier Asm.js, un sous-ensemble de JavaScript.

Si le code Asm.js compilé effectue un rendu, il est probablement manipulé par WebGL. De cette façon, l'ensemble du pipeline utilise techniquement JavaScript et le navigateur, mais il contourne presque totalement l'exécution réelle et normale du code et le chemin de rendu que JavaScript-in-a-webpage prend.

Asm.js est un sous-ensemble de JavaScript qui est fortement restreint dans ce qu'il peut faire et comment il peut fonctionner. Cela est fait de sorte que le code compilé Asm.js peut exécuter aussi rapidement que possible en faisant autant d'hypothèses qu'il peut, car la conversion du code Asm.js se fait directement dans l'assemblage. Il est important de noter que Asm.js est juste JavaScript - il n'y a pas de plugin de navigateur spécial ou fonctionnalité nécessaire pour le faire fonctionner (bien qu'un navigateur qui est capable de détecter et d'optimiser le code Asm.js sera certainement plus rapide). C'est un sous-ensemble spécialisé de JavaScript optimisé pour les performances, en particulier pour ce cas d'utilisation d'applications compilées en JavaScript.

L'utilité de asm.js

La grande utilité d'asm.js est la performance. Bien que celle-ci soit aussi dû avoir votre navigateur et à votre strucure matériel, l'asm.js est compilé de façons à être 4 à 10 fois plus rapides que les dernières versions Firefox et Chrome.

Initialement le code compilé en JS était 10 fois plus lent que du code natif. Mozilla est arrivé a des performances extrèmes qui montre le potentiel de compilé en Asm.Js Cela montre donc, qu'il y aura surement des améliorations de performances encore plus grandes dans les prochaines années.

Il convient de noter que presque toutes les applications qui ciblent Asm.js en ce moment sont des applications C / C ++ compilées à Asm.js en utilisant Emscripten. Dans cet esprit, le type d'applications qui vont cibler Asm.js, dans un proche avenir, sont celles qui bénéficieront de la portabilité de l'exécution dans un navigateur, mais qui ont un niveau de complexité dans lequel une connexion direct à JavaScript est impossible. Jusqu'à présent, la plupart des cas d'utilisation se sont centrés autour de bases de code où la performance est de la plus haute importance: comme dans les jeux en cours d'exécution, les graphismes, les interprètes de langage de programmation et les bibliothèques.

Comme mentionné précédemment, la version actuelle de Firefox est actuellement le seul navigateur qui supporte l'optimisation du code Asm.js. Cependant, il est important de souligner que Asm.js-formaté à partir de code JavaScript est encore justeu du code JavaScript, mais avec un ensemble important de restrictions. C'est pour cette raison que le code Asm.js- compilé peut encore s'exécuter dans d'autres navigateurs comme le code JavaScript normal, même si ce navigateur ne le prend pas en charge.

L'inconvéniant a cela, est la performance de ce code: Si un navigateur ne prend pas en charge les tableaux tapés ou ne compile pas spécialement le code Asm.js, la performance va être bien pire. Bien sûr, ce n'est pas spécial pour Asm.js, probablement tout navigateur qui n'a pas ces fonctionnalités souffre également d'autres manières.

Conclusion

Comme vous pouvez probablement le voir à partir du code ci-dessus Asm.js n'est pas conçu pour être écrit à la main. Il va exiger une sorte d'outillage pour être écrire et il va exiger des changements plutôt drastiques dans la façon dont serait normalement écrit en JavaScript. Le cas d'utilisation le plus courant pour Asm.js en ce moment est dans les applications C / C ++ se compilant en JavaScript.

Presque aucune de ces applications interagissent avec le DOM d'une manière significative, au-delà d'utiliser WebGL. Pour qu'il soit utilisable par les développeurs réguliers, il va y avoir des langages intermédiaires qui sont plus accessibles aux utilisateurs qui peuvent compiler en Asm.js. Le meilleur candidat, à l'heure actuelle, est LLJS dans lequel le travail commence à faire la compilation en Asm.js. Il convient de noter qu'un langage comme LLJS va encore être très différente de JavaScript et sera probablement perturbant pour beaucoup d'utilisateurs JavaScript. Même avec un langage agréable plus accessible à l'utilisateur comme LLJS, il est probable qu'il ne sera toujours utilisé que par les développeurs les plus hardcore qui veulent optimiser des morceaux de code extrêmement complexes.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels