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.
