Hacker News new | ask | show | jobs
by kevingadd 4957 days ago
Emscripten generally speaking does not produce garbage because it uses a virtual heap. If you profile the demos using a heap profiler like Chrome's you will be able to observe this. The pauses are likely due to bugs in V8 that cause it to recompile a page's JavaScript constantly (it has a lot of them). The cost of those bugs ends up being higher than that of equivalent bugs in Firefox's JS engine because of the way V8 is designed.

Either way, though, if you have a reproduction case for those pauses you should definitely file a bug about it on the appropriate tracker - emscripten's if something is wrong with the generated code, or chromium's.

1 comments

Yeah -- I knew about the virtual heap arrays, so the GC explanation didn't make sense. I'll dig into it; thanks for the pointers.

I think you're right though. Once it's been running a while, it seems OK; so I think it was JIT compilation pauses.

We've been testing out ammo.js (Emscripten compiled Bullet) for 3D physics. In this demo http://apps.playcanvas.com/will/ammo/crates after the first couple of resets, it runs smoothly.

It does indeed seem to be the JIT warming up. The good news is that Chrome Canary is significantly smoother, so 6-8 weeks until that hits stable.

Canary takes 0-6 weeks til Dev, then 6 weeks til Beta, then 6 weeks til Stable, so it's 12-18 weeks.
Wow, yeah. That's a much more dramatic demonstration. Looks great though, once it warms up.