asm.js est un langage intermédiaire constituant un sous-ensemble du langage JavaScript. Il permet une amélioration importante des performances pour les applications web écrites en langage à typage statique avec gestion manuelle de la mémoire (comme le C) puis converti en JavaScript par un compilateur source à source. Asm.js ne vise à améliorer les performances que pour un tel code compilé depuis un autre langage, pas celles de code JavaScript écrit à la main.
Il est destiné à obtenir des performances proches de celles obtenues par du code natif en limitant les fonctionnalités du langage à celles tirant parti de la compilation anticipée.
En utilisant un sous-ensemble du langage JavaScript, asm.js est déjà supporté par l'ensemble des navigateurs web contrairement aux alternatives comme Google Native Client. Le navigateur Mozilla Firefox fut le premier navigateur à implémenter les optimisations spécifiques asm.js à partir de la version 22. Les optimisations du moteur JavaScript V8 présent dans Chrome 28 ont permis de doubler les performances obtenues sur le benchmark asm.js par rapport à la précédente version de Chrome.
Le projet Emscripten propose des outils permettant de compiler du code C, C++ (ou n'importe quel autre langage pouvant être converti en LLVM) en code asm.js.
Du fait qu'asm.js est exécuté dans le navigateur, ses performances dépendent grandement de celui-ci ainsi que du matériel sur lequel il s'exécute. Comme mentionné sur le site consacré au projet, les essais préliminaires de programmes C compilés vers asm.js sont généralement plus lents d'un facteur 2 comparé à une compilation native avec Clang.
La majorité du gain de performance est obtenue par le typage de l'ensemble du code, résultant ainsi de l'absence d'utilisation du ramasse miettes (la mémoire est gérée manuellement dans un tableau typé). Il en résulte un modèle plus simple, sans comportement dynamique, sans allocation ni désallocation dynamique de mémoire, utilisant uniquement des entiers et opérations à virgule flottante bien définies, permettant de bien meilleures performances.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
Emscripten est un compilateur source à source open source permettant de compiler du bitcode LLVM en asm.js, qui peut être exécuté par les navigateurs web. Le bytecode LLVM étant généré à partir de programmes écrits en langage C ou C++, par extension Emscripten permet donc de compiler un programme C ou C++ en JavaScript. Utilisé avec BinaryEn, il permet de produire du WebAssembly. Il est compatible avec quelques interfaces de programmation courantes comme la Standard Template Library, la Simple DirectMedia Layer et OpenGL.
WebAssembly, abrégé wasm, est un standard du World Wide Web pour le développement d’applications. Il est conçu pour remplacer JavaScript avec des performances supérieures. Le standard consiste en un bytecode, sa représentation textuelle et un environnement d'exécution dans un bac à sable compatible avec JavaScript. Il peut être exécuté dans un navigateur Web et en dehors. WebAssembly est standardisé dans le cadre du World Wide Web Consortium.
Google Native Client ou NaCl (en allusion au chlorure de sodium) est un logiciel de sandbox qui permet l'exécution de code natif x86 dans un environnement confiné et contrôlé par un navigateur web. C'est un projet opensource qui donnera la possibilité aux développeurs web d'écrire du code (C ou C++) qui sera directement exécutable par le micro-processeur de la machine cliente lors du chargement du site dans un navigateur web.
Couvre la génération de code pour un compilateur, traduisant un programme Amy à WebAssembly, y compris la gestion de la mémoire et la compilation de correspondance de motifs.
Explore les murs de domaine dans les matériaux magnétiques, couvrant les considérations d'énergie, les propriétés magnétiques du fer, du cobalt et du nickel, et les processus d'inversion de domaine.
Explore les modèles linéaires pour la classification, y compris les modèles paramétriques, la régression et la régression logistique, ainsi que les mesures d'évaluation des modèles et les classificateurs de marge maximum.