I'm usually seeing less then 2x slower performance than native on average for code both in Firefox and Chrome (e.g. this voxel demo does a lot of stuff CPU work, both floating point and integer when producing new voxel mesh chunks, and the performance is at least in the same ballpark across all browsers and native versions:
http://floooh.github.io/voxel-test/)
First thing I'd try is to run the code on Firefox, since this does AOT compile which guarantees that the code isn't 'de-optimized' during runtime.
If you get any warnings about large functions during linking, look into emscripten's outlining feature which breaks large function bodies into smaller ones (large functions may confuse JIT JS engines)
Next try traditional profiling, compile with optimization and the --profile option (this keeps function names readable), and run the code through the Javascript profiler in browser dev-tools, this should give you a good idea where most time is spent.
I'm not sure about the state of 64-bit integer support in emscripten, but if your code is doing a lot of 64-bit integer stuff, this might be worth looking into.
Also, if your code is doing WebGL stuff there are a number of additional things that can go wrong where WebGL has different performance behaviour than desktop, but from reading your description I guess that's not the case.
Finally, it is possible that your code triggers a bug in the Chrome Javascript engine, that's why it is important to test on as many different browsers, platforms and browser versions as possible.
Hope this helps,
-Floh.