emscripten-core/emscripten

Optimizing output .js size: using createExportWrapper with no assertions

Open

#14 695 ouverte le 20 juil. 2021

Voir sur GitHub
 (12 commentaires) (1 réaction) (1 assigné)C++ (3 519 forks)batch import
help wanted

Métriques du dépôt

Stars
 (27 361 stars)
Métriques de merge PR
 (Merge moyen 19j 10h) (147 PRs mergées en 30 j)

Description

While looking at produced .js files for Pyodide (pyodide.asm.js, 1.78 MB total, 293kB compressed) a lot of the size seems to be due to this function definition for each symbol, https://github.com/emscripten-core/emscripten/blob/e77adf8a3a79e79b666dce6d7ad0d6d3b9e94b20/emscripten.py#L671-L674 in part because the mangled name can be quite long and it's repeated 4 times there.

Would it make sense to use an equivalent of createExportWrapper instead as done a few lines above? https://github.com/emscripten-core/emscripten/blob/e77adf8a3a79e79b666dce6d7ad0d6d3b9e94b20/emscripten.py#L659-L661

or even

 /** @type {function(...*):?} */ 
 var %(mangled)s = createExportWrapper("%(name)s", Module); 
 ''' % {'mangled': mangled, 'name': name}) 

where createExportWrapper is currently defined only when assertions = true. I'm not saying to use createExportWrapper exactly but an equivalent simpler function with no assertions. Unless there is a reason the current solution is preferable? Thanks!

Guide contributeur