| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | 
| prog:emscripten [2021/08/03 06:25]  – [Compilation] : ajout des options pour optimiser la taille root | prog:emscripten [2022/07/18 12:49] (Version actuelle)  – [Compilation] : ajout de "Pour le debug" root | 
|---|
| =====Téléchargement et installation===== | =====Téléchargement et installation et mise à jour===== | 
| <code bash> | <code bash> | 
| git clone --depth 1 https://github.com/emscripten-core/emsdk.git | git clone --depth 1 https://github.com/emscripten-core/emsdk.git | 
| [[https://pascalpares.appspot.ovh/webassembly-for-javascript-developers/|An Introduction to WebAssembly for JavaScript Developers]] {{ :prog:emscripten:an_introduction_to_webassembly_for_javascript_developers_2021-07-24_11_04_06_.html |Archive du 21/04/2021 le 24/07/2021}} | [[https://pascalpares.appspot.ovh/webassembly-for-javascript-developers/|An Introduction to WebAssembly for JavaScript Developers]] {{ :prog:emscripten:an_introduction_to_webassembly_for_javascript_developers_2021-07-24_11_04_06_.html |Archive du 21/04/2021 le 24/07/2021}} | 
 |  | 
|   | [[https://developers.google.com/web/updates/2018/03/emscripting-a-c-library|Emscripting a C library to Wasm]] {{ :prog:emscripten:emscripting_a_c_library_to_wasm_web_google_developers_8_4_2021_10_04_21_am_.html |Archive du 31/07/2020 le 04/08/2021}} | 
| ====Compilation==== | ====Compilation==== | 
 |  | 
 |  | 
|   * ''-flto'' : active l'optimisation globale du lieur, |   * ''-flto'' : active l'optimisation globale du lieur, | 
|   * ''-DNDEBUG'' : désactive le debug, |   * ''-DNDEBUG'' : désactive le debug. N'impacte pas le code emscripten mais uniquement le code utilisateur, | 
|   * ''-Oz'' : le bytecode est optimisé pour réduire la taille. |   * ''-Oz'' : le bytecode est optimisé pour réduire la taille. | 
|   * ''-s MALLOC=%%'emmalloc'%%'' : utilise une version de malloc réduite en fonctionnalité mais spécifique à emscripten. |   * ''-s MALLOC=%%'emmalloc'%%'' : utilise une version de malloc réduite en fonctionnalité mais spécifique à emscripten. | 
|   |  | 
|   | Pour le debug: | 
|   |   * ''-O0'' : aucune optimisation. | 
|   |   * ''-g'' : toutes les informations de débogage, | 
|   |   * ''-s ASSERTIONS=2'' : toutes les assertions à l'exécution, | 
|   |   * ''-s DEMANGLE_SUPPORT=1'' : affichage des symboles en cas d'affichage de la trace par le compilateur, | 
|   |   * ''%%--%%emit-symbol-map'' : génère un fichier ''.map'', | 
|   |   * ''-gsource-map'' : génère un ''.map'' compatible LLVM pour déboguer avec Chrome, | 
|   |   * ''%%--source-map-base http://localhost:4200/assets/%%'' : codage en dur du chemin vers le fichier ''.wasm'' uploadé et non du chemin dans l'ordinateur. | 
|   |  | 
|   | Pour mémo, le tableau des résultats. La comparaison des options ''-Ox'' se fait par rapport à ''-O0''. Puis, les options suivantes s'accumulent avec l'option -Oz. Dans mon cas, ''-O2'' réduit mieux la taille que ''-Oz''. A confirmer sur de plus gros projets. | 
|   |  | 
|   | ^Option^gros js^gros wasm^petit js^petit wasm^gros js^gros wasm^petit js^petit wasm^ | 
|   | |''-O0''|349801|888030|217442|59279|-|-|-|-| | 
|   | |''-O2''|349801|841160|214892|26971|0%/0o|-5,3%/-46870o|-1,2%/-2550o|-54,5%/-32308o| | 
|   | |''-O3''|349801|841966|214892|26971|0%/0o|-5,2%/-46064o|-1,2%/-2550o|-54,5%/-32308o| | 
|   | |''-Os''|349801|842814|217442|34746|0%/0o|-5,1%/-45216o|0%/0o|-41,4%/-24533o| | 
|   | |''-Oz''|349801|842838|217442|34739|0%/0o|-5,1%/-45192o|0%/0o|-41,4%/-24540o| | 
|   | |''-s ENVIRONMENT=web,worker''|N/A|N/A|214984|34739|N/A|N/A|-1,1%/-2458o|0%/0o| | 
|   | |''%%--%%closure 1''|158780|842838|118137|34739|-54,6%/-191021o|0%/0o|-45%/-96847o|0%/0o| | 
|   | |''%%--%%no-entry''|158223|842838|117580|34739|-0,4%/-557o|0%/0o|-0,5%/-557o|0%/0o| | 
|   | |''-flto''|158223|835253|117580|31867|0%/0o|-0,9%/-7585o|0%/0o|-8,3%/-2872o| | 
|   | |''-s ASSERTIONS=0''|67927|835110|34944|31510|-57,1%/-90296o|0%/-143o|-70,3%/-82636o|-1,1%/-357o| | 
|   | |''-DNDEBUG''|67927|835110|34944|31510|0%/0o|0%/0o|0%/0o|0%/0o| | 
|   | |''-s INVOKE_RUN=0''|67927|835110|34944|31510|0%/0o|0%/0o|0%/0o|0%/0o| | 
|   | |''-s MALLOC='emmalloc%%'%%''|67927|826803|34944|23703|0%/0o|-1%/-8307o|0%/0o|-24,8%/-7807o| | 
 |  | 
| ====vcpkg==== | ====vcpkg==== |