there are bunch of box2d ports to JS, none of them are handwritten, and are all auto generated. thus poor performance.
in contrary, Chipmunk js was handwritten, and with optimization in mind, it is about twice as fast as any box2d js generated ports
About the update cycle, ye we are fully aware of that, and we are looking for a way to solve it.
This issue may not be easy to solve, as it is more of a language and browser thing than game engine, js is single threaded, its timing is terribad, the garbage collector is uncontrollable, and when it does its things, it spikes the game loop
Webworker might help with this issue by moving physics to another thread, but the cost of sending and receiving large objects between thread may not provide too much benefit, also the issue with ie9 and some mobile browsers
As for now, I recommend for physics games that you spawn a new “setInterval” for physics calculation, and using fixed timestep for physics loop