Comparison table of Ammo.js WebAssembly and Asm.js versions
Date: 9 January 2017
Browser: Chrome 57.0.2970.0 (Official Build) dev (64-bit)
| Name | WASM (WebAssembly) | Asm.js |
|---|---|---|
| Loading time | ~2.1s | ~2.4s |
| Files used | ammoloader.js [434 Kb], ammo.wasm [725 Kb] |
ammo.js [1.7Mb] |
| WASM binary compile time | (130ms - 300ms) Average: 180ms |
- |
| Example used | basic / helloworld | basic / helloworld |
| Compilation | Tools: Emscripten v1.37.1 (Binaryen v21) Output files: • ammo.js [562Kb] wrapped and renamed to ammoloader.js • ammo.asm.js [7.18Mb] • ammo.wast [12.6Mb] • ammo.wasm [725Kb] |
Tools: Emscripten v1.37.1 (Asm.js) Output files: • ammo.js [1.7Mb] |
Loading time - Not the real loading time. There were whitestorm.js beta and three.js loaded first in both cases.
The reason of why WASM build can be slower than asm.js build
ammoloader.js contains a lot of code generated in emscripten. It is required file, cause it contains data that should be imported in WASM module of compiled Bullet Physics, but it also has a lot of polyfills that are also applied to that module (such as asm.js polyfill). Applying them to exports object can take additional time.
Build files
build/- Output files from Bullet Physics 3 to WASM to compilation.vendor/- Files used in performance comparison.
!!! This is WIP. (Work in progress)
It means that work isn't finished yet. I will try to optimize ammoloader.js as far as possible and will play more with compilation parameters, let me know if you know how to improve loading speed.
Example will be uploaded soon