Thanks Floh and Alon for your detailed replies. Really appreciate it. I tried to use both --llvm-opts and --llvm-lto but interestingly, the size of the JS increased from 2202kb to 2328kb. These are my build parameters:
emcc vector.cpp -o hello.html --llvm-opts 3 --llvm-lto 1 Is there something wrong with the way that I am using the parameters above? I could use -Oz and -profiling because that would still give me debuggable code but just want to clarify if the -Oz optimization already includes --llvm-lto? I am currently trying to port some legacy code which uses a only few STL containers such as vectors and maps. Is there a way for me to not build STL with the generated JS and replace the vector and map classes with my own implementation without touching the legacy code? Such as thru DEFAULT_LIBRARY_FUNCS_TO_INCLUDE for e.g.? On Tuesday, July 22, 2014 6:51:53 AM UTC+8, Alon Zakai wrote: > > std::vector causes emscripten to pull in libc++, a full implementation of > the C++ standard library. It then tries to strip out code it can prove is > not used, but in practice just including std::vector is enough to keep > quite a bit alive. std::iostream is worse. > > Building with LTO may decrease the size somewhat (--llvm-lto 1). > > - Alon > > > > On Mon, Jul 21, 2014 at 2:59 AM, awt <[email protected] <javascript:>> > wrote: > >> Hi, >> >> I wrote 2 simple programs to compare the size of the Javascript files >> generated in unoptimized mode for both array and vector: >> >> 1. Array version: >> >> int main() >> { >> int arr1[2000]; >> add(arr1); >> return 0; >> } >> >> void add(int arr[]) >> { >> for(int i=0;i<2000;i++) >> { >> arr[i]=i; >> } >> } >> >> 2. Vector version: >> >> int main() >> { >> vector<int> v1; >> add(v1); >> return 0; >> } >> >> void add(vector<int>& v) >> { >> for(int i=0;i<2000;i++) >> { >> v.push_back(i); >> } >> } >> >> I was quite surprised that the size of the JS file generated for the >> array is only 203KB but the vector version took up 2393KB. Are there >> built-in optimizations for STL classes in Emscripten that I could leverage >> on to shrink the file size or do I have to implement my own vector classes? >> Any suggestions would be much appreciated. Thanks in advance. >> >> -- >> 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] <javascript:>. >> 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.
