我正在开发一个数学网络应用程序(http://www-fourier.ujf-grenoble.fr/%7eparisse/xcasen.html),由emscripten 1.34.1从C ++编译为javascript。在Firefox 45中性能很好,例如,因为ifactor(2 ^ 128 + 1)需要0.1s == time(ifactor(2 ^ 128 + 1)),我的Mac上使用Firefox 45分解2 ^ 128 + 1到59649589127497217×5704689200685129054721但是在Firefox 48(以及Firefox每晚)中,它慢得多,第一次运行速度慢10 *到20 *,下次运行速度慢2 *到10 *): [链接到测试](http://www-fourier.ujf-grenoble.fr/%7eparisse/xcasen.html#+ifactor(2 ^ 128 + 1)& + time(ifactor(2 ^ 128 + 1)&)
它与emscripten版本有关吗?是否有解决方法(除了告诉我的用户降级他们的Firefox安装并停止升级)?
答案 0 :(得分:4)
看起来您的应用程序使用asm.js内存增长(ALLOW_MEMORY_GROWTH emcc选项)。浏览器有decided to stop supporting that,这意味着asm.js +内存增长不再获得asm.js优化。
如果你可以避免使用内存增长,那么app应该像以前一样以完整的asm.js速度运行。