It would be interesting to know if you observe the same behaviour when
running on native platforms.  I would expect the overhead of the allocator
(new/delete/malloc/free) to be roughly the same for emscripten as for your
native linux build.  If you are seeing the allocator overheads if
emscripten differ significantly with emscripten compared to other targets
then it would and issue worth investigating, bit if we are in the same
ballpark then you this could just a be C/C++ optimization question, rather
than an emscripten-specific issue.   It could also be a libc++ be libstdc++
issue of course (we use libc++ whereas most desktop linux distros using
libstdc++).

cheers,
sam

On Fri, Apr 23, 2021 at 4:00 PM John R <[email protected]> wrote:

> Hi all,
>
> I have some C++ code (compiled to WASM) that I'm having
> trouble optimizing. I've been profiling the code with Chrome DevTools, and
> I've made sure to specify the *-O3* optimization flag.
>
> The slowest parts of the code seem to be related to allocating, resizing,
> and destroying std::vector<T> instances. In my case, `T` is always a basic
> numeric type, like float or int. Unfortunately, I don't have much control
> over *how* these allocations / deletions happen, as they are deep within
> the internals of a library I am using.
>
> Basically, there is a class that I'm using that allocates a bunch of small
> vectors upon construction and destroys them upon deletion. The constructor
> / destructor for this class are the parts that I'm noticing are quite slow,
> and the vast majority of the call time seems to be spent on resizing and/or
> destructing std::vector<T>.
>
> Short of rewriting this part of the code to use some sort of global memory
> pool, rather than a bunch of small, independent allocations (not even sure
> this would help - just a guess), is there anything else I can do or should
> look into?
>
> I should note that I am using the *ALLOW_MEMORY_GROWTH* flag as well.
>
> Thanks,
> John
>
> --
> 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].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/emscripten-discuss/e0a8a88a-481a-48fb-bff8-4ff5dc03f8e0n%40googlegroups.com
> <https://groups.google.com/d/msgid/emscripten-discuss/e0a8a88a-481a-48fb-bff8-4ff5dc03f8e0n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2_9VWstWOGKE0_MJmE4sDmQCqK9juifdruugWZ0aKx1Rw%40mail.gmail.com.

Reply via email to