I'm not sure how exactly memory-growth works these days (I'm sure it's much 
more efficient than in the olden days), but maybe your std::vectors are 
frequently bumping against the top of the WASM heap and cause heap 
regrowths (although one would expect that this only happens within a very 
short "warmup phase".

Does it help if you increase INITIAL_MEMORY with the linker option "-s 
INITIAL_MEMORY=xxx"?

(the default seems to be 16 
MBytes: 
https://github.com/emscripten-core/emscripten/blob/897d6fac93c4152feb03dfbef6eec1e21af39ae1/src/settings.js#L170)


On Saturday, 24 April 2021 at 01:00:33 UTC+2 [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/8cdb4ac9-4f16-4a73-b202-b7902a12ad6an%40googlegroups.com.

Reply via email to