Thanks for the suggestions.  Running a few warmup passes does seem to
improve things, but I am still about 3-4x slower than Firefox.

On Fri, Apr 8, 2016 at 12:38 AM, Floh <[email protected]> wrote:

> 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.
>
> Am Freitag, 8. April 2016 01:41:13 UTC+2 schrieb Gareth Morgan:
>>
>> I am experimenting with using Emscripten generated code in my Javascript
>> application. The results are pretty disappointing performance-wize. I am
>> seeing 40x slower on Chrome 49.0.2623.110 (compiling with emcc -o3)
>> versus a release build on visual studio.
>>
>> I have a fairly straight forward marching squares based geometry
>> generation function, running in a plain EXE complied with visual studio in
>> release mode, the function call takes around 2.5ms (as reported by
>> QueryPerformanceCounter), the identical function run in my javascript
>> appliction takes 90-100ms (measured by Date().getMilliseconds()). I have
>> verified the time scales roughly with the size of the problem, so it's not
>> just setup/JIT cost.
>>
>> My compile line is this;
>> emcc DCEL.cpp MS.cpp Blob.cpp -o html/Blob.js -O3 -s
>> EXPORTED_FUNCTIONS="['_Blobify','_Init']"
>>
>>
>> I realize there is no native code support on this version of Chrome, but
>> is this expected? Am I missing an optimization step?
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "emscripten-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/emscripten-discuss/Gj8zKC_F1KY/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to