Emscripten compilation works really slow on web browsers.

88 views
Skip to first unread message

Adam Wnęk

unread,
Jan 26, 2021, 11:17:27 AM1/26/21
to emscripten-discuss

Hi
I have small application converting files from IGES to VRML format. Im using OPENCASCADE librariesto do so. After compilation in emscripten application works but it is much slower than the same code complied using "normal" compilation.
Processing one file takes several seconds then while doing the same in browser using wasm module takes several minutes.
In wasm module source file is saved in FS system than loaded and processed. output data is send back to JS by value::typed_memory_view. OPENCASCADE (static) libraries are compiled with emscripten too.
What may be the cause of such huge performance drop? Im stuck there a bit.
Build platform :Ubuntu

This is my make output:
------------------------------------------------------------------------------------------------------------
/home/adam/projects/EmscriptenProjects/CadModelConverter/build> make -j4 VERBOSE=1
/usr/bin/cmake -S/home/adam/projects/EmscriptenProjects/CadModelConverter -B/home/adam/projects/EmscriptenProjects/CadModelConverter/build --check-build-system CMakeFiles/Makefile.cmake 0
Re-run cmake file: Makefile older than: ../CMakeLists.txt
-- Using OpenCASCADE from "/home/adam/Temp/instal/OCCT_emsdk/lib/cmake/opencascade/"
-- Configuring done
-- Generating done
-- Build files have been written to: /home/adam/projects/EmscriptenProjects/CadModelConverter/build
/usr/bin/cmake -E cmake_progress_start /home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles /home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles/progress.marks
/usr/bin/make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
/usr/bin/make -f CMakeFiles/cadModelConverter.dir/build.make CMakeFiles/cadModelConverter.dir/depend
make[2]: Entering directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
cd /home/adam/projects/EmscriptenProjects/CadModelConverter/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/adam/projects/EmscriptenProjects/CadModelConverter /home/adam/projects/EmscriptenProjects/CadModelConverter /home/adam/projects/EmscriptenProjects/CadModelConverter/build /home/adam/projects/EmscriptenProjects/CadModelConverter/build /home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles/cadModelConverter.dir/DependInfo.cmake --color=
Dependee "/home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles/cadModelConverter.dir/DependInfo.cmake" is newer than depender "/home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles/cadModelConverter.dir/depend.internal".
Scanning dependencies of target cadModelConverter
make[2]: Leaving directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
/usr/bin/make -f CMakeFiles/cadModelConverter.dir/build.make CMakeFiles/cadModelConverter.dir/build
make[2]: Entering directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
[ 20%] Building CXX object CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o
/home/adam/Temp/emsdk/upstream/emscripten/em++   -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade  -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -v   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/fileconverter.cpp
[ 40%] Building CXX object CMakeFiles/cadModelConverter.dir/main.cpp.o
/home/adam/Temp/emsdk/upstream/emscripten/em++   -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade  -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -v   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/main.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/main.cpp
[ 60%] Building CXX object CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o
/home/adam/Temp/emsdk/upstream/emscripten/em++   -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade  -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -v   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/myvrmlapi_writer.cpp
shared:INFO: (Emscripten: Running sanity checks)
shared:INFO: (Emscripten: Running sanity checks)
shared:INFO: (Emscripten: Running sanity checks)
 "/home/adam/Temp/emsdk/upstream/bin/clang++" -DEMSCRIPTEN -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=11 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration --sysroot=/home/adam/Temp/emsdk/upstream/emscripten/system -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -Xclang -iwithsysroot/include/libcxx -Xclang -iwithsysroot/lib/libcxxabi/include -Xclang -iwithsysroot/include/compat -Xclang -iwithsysroot/include/libc -Xclang -iwithsysroot/lib/libc/musl/arch/emscripten -Xclang -iwithsysroot/local/include -Xclang -iwithsysroot/include/SSE -Xclang -iwithsysroot/include/neon -Xclang -iwithsysroot/lib/compiler-rt/include -Xclang -iwithsysroot/lib/libunwind/include -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade -v -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/main.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/main.cpp -c -o CMakeFiles/cadModelConverter.dir/main.cpp.o
clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f4c8b80318005ca61bfed9b40ee9e6039194159b)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/adam/Temp/emsdk/upstream/bin
 (in-process)
 "/home/adam/Temp/emsdk/upstream/bin/clang-12" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name main.cpp -mrelocation-model static -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -target-cpu generic -fvisibility hidden -debugger-tuning=gdb -v -resource-dir /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=2 -D __EMSCRIPTEN_minor__=0 -D __EMSCRIPTEN_tiny__=11 -D _LIBCPP_ABI_VERSION=2 -D unix -D __unix -D __unix__ -I /home/adam/projects/EmscriptenProjects/CadModelConverter -I /home/adam/Temp/instal/OCCT_emsdk/include/opencascade -isysroot /home/adam/Temp/emsdk/upstream/emscripten/system -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include -Werror=implicit-function-declaration -std=gnu++11 -fdeprecated-macro -fdebug-compilation-dir /home/adam/projects/EmscriptenProjects/CadModelConverter/build -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -iwithsysroot/include/libcxx -iwithsysroot/lib/libcxxabi/include -iwithsysroot/include/compat -iwithsysroot/include/libc -iwithsysroot/lib/libc/musl/arch/emscripten -iwithsysroot/local/include -iwithsysroot/include/SSE -iwithsysroot/include/neon -iwithsysroot/lib/compiler-rt/include -iwithsysroot/lib/libunwind/include -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/cadModelConverter.dir/main.cpp.o -x c++ /home/adam/projects/EmscriptenProjects/CadModelConverter/main.cpp
clang -cc1 version 12.0.0 based upon LLVM 12.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/adam/projects/EmscriptenProjects/CadModelConverter
 /home/adam/Temp/instal/OCCT_emsdk/include/opencascade
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL
 /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libcxx
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libcxxabi/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/compat
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libc
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libc/musl/arch/emscripten
 /home/adam/Temp/emsdk/upstream/emscripten/system/local/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SSE
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/neon
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/compiler-rt/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libunwind/include
 /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include
End of search list.
 "/home/adam/Temp/emsdk/upstream/bin/clang++" -DEMSCRIPTEN -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=11 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration --sysroot=/home/adam/Temp/emsdk/upstream/emscripten/system -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -Xclang -iwithsysroot/include/libcxx -Xclang -iwithsysroot/lib/libcxxabi/include -Xclang -iwithsysroot/include/compat -Xclang -iwithsysroot/include/libc -Xclang -iwithsysroot/lib/libc/musl/arch/emscripten -Xclang -iwithsysroot/local/include -Xclang -iwithsysroot/include/SSE -Xclang -iwithsysroot/include/neon -Xclang -iwithsysroot/lib/compiler-rt/include -Xclang -iwithsysroot/lib/libunwind/include -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade -v -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/fileconverter.cpp -c -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o
clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f4c8b80318005ca61bfed9b40ee9e6039194159b)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/adam/Temp/emsdk/upstream/bin
 (in-process)
 "/home/adam/Temp/emsdk/upstream/bin/clang-12" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name fileconverter.cpp -mrelocation-model static -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -target-cpu generic -fvisibility hidden -debugger-tuning=gdb -v -resource-dir /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=2 -D __EMSCRIPTEN_minor__=0 -D __EMSCRIPTEN_tiny__=11 -D _LIBCPP_ABI_VERSION=2 -D unix -D __unix -D __unix__ -I /home/adam/projects/EmscriptenProjects/CadModelConverter -I /home/adam/Temp/instal/OCCT_emsdk/include/opencascade -isysroot /home/adam/Temp/emsdk/upstream/emscripten/system -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include -Werror=implicit-function-declaration -std=gnu++11 -fdeprecated-macro -fdebug-compilation-dir /home/adam/projects/EmscriptenProjects/CadModelConverter/build -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -iwithsysroot/include/libcxx -iwithsysroot/lib/libcxxabi/include -iwithsysroot/include/compat -iwithsysroot/include/libc -iwithsysroot/lib/libc/musl/arch/emscripten -iwithsysroot/local/include -iwithsysroot/include/SSE -iwithsysroot/include/neon -iwithsysroot/lib/compiler-rt/include -iwithsysroot/lib/libunwind/include -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o -x c++ /home/adam/projects/EmscriptenProjects/CadModelConverter/fileconverter.cpp
clang -cc1 version 12.0.0 based upon LLVM 12.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/adam/projects/EmscriptenProjects/CadModelConverter
 /home/adam/Temp/instal/OCCT_emsdk/include/opencascade
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL
 /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libcxx
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libcxxabi/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/compat
 "/home/adam/Temp/emsdk/upstream/bin/clang++" -DEMSCRIPTEN -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=11 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration --sysroot=/home/adam/Temp/emsdk/upstream/emscripten/system -Xclang -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -Xclang -iwithsysroot/include/libcxx -Xclang -iwithsysroot/lib/libcxxabi/include -Xclang -iwithsysroot/include/compat -Xclang -iwithsysroot/include/libc -Xclang -iwithsysroot/lib/libc/musl/arch/emscripten -Xclang -iwithsysroot/local/include -Xclang -iwithsysroot/include/SSE -Xclang -iwithsysroot/include/neon -Xclang -iwithsysroot/lib/compiler-rt/include -Xclang -iwithsysroot/lib/libunwind/include -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade -v -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/myvrmlapi_writer.cpp -c -o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libc
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libc/musl/arch/emscripten
 /home/adam/Temp/emsdk/upstream/emscripten/system/local/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SSE
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/neon
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/compiler-rt/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libunwind/include
 /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include
End of search list.
clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f4c8b80318005ca61bfed9b40ee9e6039194159b)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/adam/Temp/emsdk/upstream/bin
 (in-process)
 "/home/adam/Temp/emsdk/upstream/bin/clang-12" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name myvrmlapi_writer.cpp -mrelocation-model static -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -target-cpu generic -fvisibility hidden -debugger-tuning=gdb -v -resource-dir /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=2 -D __EMSCRIPTEN_minor__=0 -D __EMSCRIPTEN_tiny__=11 -D _LIBCPP_ABI_VERSION=2 -D unix -D __unix -D __unix__ -I /home/adam/projects/EmscriptenProjects/CadModelConverter -I /home/adam/Temp/instal/OCCT_emsdk/include/opencascade -isysroot /home/adam/Temp/emsdk/upstream/emscripten/system -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1 -internal-isystem /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten -internal-isystem /home/adam/Temp/emsdk/upstream/emscripten/system/include -Werror=implicit-function-declaration -std=gnu++11 -fdeprecated-macro -fdebug-compilation-dir /home/adam/projects/EmscriptenProjects/CadModelConverter/build -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -isystem/home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL -isystem/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include -iwithsysroot/include/libcxx -iwithsysroot/lib/libcxxabi/include -iwithsysroot/include/compat -iwithsysroot/include/libc -iwithsysroot/lib/libc/musl/arch/emscripten -iwithsysroot/local/include -iwithsysroot/include/SSE -iwithsysroot/include/neon -iwithsysroot/lib/compiler-rt/include -iwithsysroot/lib/libunwind/include -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o -x c++ /home/adam/projects/EmscriptenProjects/CadModelConverter/myvrmlapi_writer.cpp
clang -cc1 version 12.0.0 based upon LLVM 12.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/c++/v1"
ignoring nonexistent directory "/home/adam/Temp/emsdk/upstream/emscripten/system/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/adam/projects/EmscriptenProjects/CadModelConverter
 /home/adam/Temp/instal/OCCT_emsdk/include/opencascade
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SDL
 /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libcxx
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libcxxabi/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/compat
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/libc
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libc/musl/arch/emscripten
 /home/adam/Temp/emsdk/upstream/emscripten/system/local/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/SSE
 /home/adam/Temp/emsdk/upstream/emscripten/system/include/neon
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/compiler-rt/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/lib/libunwind/include
 /home/adam/Temp/emsdk/upstream/lib/clang/12.0.0/include
 /home/adam/Temp/emsdk/upstream/emscripten/system/include
End of search list.
[ 80%] Linking CXX executable cadModelConverter
/usr/bin/cmake -E cmake_link_script CMakeFiles/cadModelConverter.dir/link.txt --verbose=1
/home/adam/Temp/emsdk/upstream/emscripten/em++   -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -v  -rdynamic --bind -s FORCE_FILESYSTEM=1 -s USE_SDL=2 -s FORCE_FILESYSTEM=1 CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o CMakeFiles/cadModelConverter.dir/main.cpp.o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o  -o cadModelConverter  -Wl,--whole-archive /home/adam/Temp/instal/OCCT_emsdk/lib/libTKRWMesh.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKVRML.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXDESTEP.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXDEIGES.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKIGES.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEP.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEP209.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEPAttr.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEPBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXSBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKVCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKStd.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKStdL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXml.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBin.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKLCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKCDF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMeshVS.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKOpenGl.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKV3d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKService.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMesh.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKFeat.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKOffset.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKFillet.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKHLR.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBool.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKShHealing.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBO.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKPrim.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKTopAlgo.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKGeomAlgo.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBRep.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKGeomBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKG3d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKG2d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMath.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKernel.a -Wl,--no-whole-archive
shared:INFO: (Emscripten: Running sanity checks)
 "/home/adam/Temp/emsdk/upstream/bin/wasm-ld" -o cadModelConverter.wasm CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o CMakeFiles/cadModelConverter.dir/main.cpp.o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o -L/home/adam/Temp/emsdk/upstream/emscripten/system/local/lib -L/home/adam/Temp/emsdk/upstream/emscripten/system/lib --whole-archive -L/home/adam/Temp/emsdk/upstream/emscripten/cache/wasm /home/adam/Temp/instal/OCCT_emsdk/lib/libTKRWMesh.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKVRML.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXDESTEP.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXDEIGES.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKIGES.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEP.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEP209.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEPAttr.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKSTEPBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXSBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKVCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKTObj.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKStd.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKStdL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXml.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBin.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKXmlL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBinL.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKLCAF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKCDF.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMeshVS.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKOpenGl.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKV3d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKService.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMesh.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKFeat.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKOffset.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKFillet.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKHLR.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBool.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKShHealing.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBO.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKPrim.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKTopAlgo.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKGeomAlgo.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKBRep.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKGeomBase.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKG3d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKG2d.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKMath.a /home/adam/Temp/instal/OCCT_emsdk/lib/libTKernel.a --no-whole-archive /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libSDL2.a --whole-archive /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libembind-rtti.a --no-whole-archive /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libgl.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libc.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libcompiler_rt.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libc++-noexcept.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libc++abi-noexcept.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libdlmalloc.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libc_rt_wasm.a /home/adam/Temp/emsdk/upstream/emscripten/cache/wasm/libsockets.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined --strip-debug --export-table --export main --export emscripten_stack_get_end --export emscripten_stack_get_free --export emscripten_stack_init --export stackSave --export stackRestore --export stackAlloc --export __wasm_call_ctors --export fflush --export __errno_location --export malloc --export free --export setThrew --export emscripten_main_thread_process_queued_calls --export _ZSt18uncaught_exceptionv --export __cxa_is_pointer_type --export __cxa_can_catch --export realloc --export testSetjmp --export saveSetjmp --export _get_tzname --export _get_daylight --export _get_timezone --export emscripten_GetProcAddress --export strstr --export htons --export ntohs --export memcpy --export memalign --export memset -z stack-size=5242880 --initial-memory=16777216 --no-entry --max-memory=2147483648 --global-base=1024
 "/home/adam/Temp/emsdk/upstream/bin/wasm-emscripten-finalize" --detect-features --minimize-wasm-changes --dyncalls-i64 cadModelConverter.wasm -o cadModelConverter.wasm
 "/home/adam/Temp/emsdk/node/12.18.1_64bit/bin/node" /home/adam/Temp/emsdk/upstream/emscripten/src/compiler.js /tmp/tmpc39q3j3t.txt
make[2]: Leaving directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
[100%] Built target cadModelConverter
make[1]: Leaving directory '/home/adam/projects/EmscriptenProjects/CadModelConverter/build'
/usr/bin/cmake -E cmake_progress_start /home/adam/projects/EmscriptenProjects/CadModelConverter/build/CMakeFiles 0
*** Finished ***
---------------------------------------------------------------------------------------
Thanks in advance for any suggestions.
Regards
Adam Wnek

Thomas Lively

unread,
Jan 26, 2021, 12:57:11 PM1/26/21
to emscripte...@googlegroups.com
Hi Adam,

I don't see any optimization flags used in your Make output. Does compiling with `-O2` or `-O3` make a difference?

Thomas

--
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 emscripten-disc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/7a27757e-2691-40c5-bb65-912651effb77n%40googlegroups.com.

Adam Wnęk

unread,
Jan 26, 2021, 4:22:28 PM1/26/21
to 'Thomas Lively' via emscripten-discuss

Hi Thomas,

I'm using -O3 right now.  There was no substantial difference between this and -O2

Adam


W dniu 26.01.2021 o 18:56, 'Thomas Lively' via emscripten-discuss pisze:

Thomas Lively

unread,
Jan 26, 2021, 4:29:09 PM1/26/21
to emscripte...@googlegroups.com
Do you see those optimization flags being used in the verbose make output? For example, in the output in your original message, you have

/home/adam/Temp/emsdk/upstream/emscripten/em++   -I/home/adam/projects/EmscriptenProjects/CadModelConverter -I/home/adam/Temp/instal/OCCT_emsdk/include/opencascade  -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -v   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/fileconverter.cpp

Clearly some flags like " -s WASM=1 -s ALLOW_MEMORY_GROWTH=1" are being used, but I would have expected to see optimization flags here as well.

Adam Wnęk

unread,
Jan 27, 2021, 4:22:25 PM1/27/21
to 'Thomas Lively' via emscripten-discuss

Hi,

I have checked once again. My previous snapshot  from make output was without optimization indeed (different configuration) 

Right  one looks like that:

/home/adam/Temp/emsdk/upstream/emscripten/em++  -DOCC_CONVERT_SIGNALS @CMakeFiles/cadModelConverter.dir/includes_CXX.rsp -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -DNDEBUG -O2   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/fileconverter.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/fileconverter.cpp


/home/adam/Temp/emsdk/upstream/emscripten/em++  -DOCC_CONVERT_SIGNALS @CMakeFiles/cadModelConverter.dir/includes_CXX.rsp -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -DNDEBUG -O2   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/main.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/main.cpp


/home/adam/Temp/emsdk/upstream/emscripten/em++  -DOCC_CONVERT_SIGNALS @CMakeFiles/cadModelConverter.dir/includes_CXX.rsp -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -DNDEBUG -O2   -std=gnu++11 -o CMakeFiles/cadModelConverter.dir/myvrmlapi_writer.cpp.o -c /home/adam/projects/EmscriptenProjects/CadModelConverter/myvrmlapi_writer.cpp


/home/adam/Temp/emsdk/upstream/emscripten/em++   -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -DNDEBUG -O2  -O2 --bind  -s FORCE_FILESYSTEM=1  @CMakeFiles/cadModelConverter.dir/objects1.rsp  -o cadModelConverter.js @CMakeFiles/cadModelConverter.dir/linklibs.rsp


Performance is more or less the same.

Regards

Adam




W dniu 26.01.2021 o 22:28, 'Thomas Lively' via emscripten-discuss pisze:

Thomas Lively

unread,
Jan 27, 2021, 6:09:44 PM1/27/21
to emscripte...@googlegroups.com
Ok, thanks for verifying. I'm not familiar with the libraries you're using. Do they use SIMD or multithreading in the native versions? That could be a source of large slowdowns if you're not using those features in the WebAssembly version. You also might want to profile your application in Chrome's DevTools to see where it is spending its time and compare that to a profile of the native build.

Adam Wnęk

unread,
Jan 28, 2021, 5:10:02 AM1/28/21
to 'Thomas Lively' via emscripten-discuss

Hi

Thanks for advice. I will check this on DevTools. Right now quick grep search in library src files shows, that there are pthread header included in several files.

Should I add -pthread flag for compilation of my code? Should i recompile libraries with -pthread flag?

Regards

Adam

W dniu 28.01.2021 o 00:09, 'Thomas Lively' via emscripten-discuss pisze:

Thomas Lively

unread,
Jan 28, 2021, 1:21:43 PM1/28/21
to emscripte...@googlegroups.com
Yes, recompiling with -pthread is certainly something you can play around with. You will probably need to compile all or none of the code with -pthread, rather than just some of it. 

Adam Wnęk

unread,
Jan 28, 2021, 2:08:08 PM1/28/21
to 'Thomas Lively' via emscripten-discuss

Hi

I tried -pthread. My module woks only on Chrome now, it calls "undefined SharedArrayBuffer" in Firefox  when I load my web worker with my module. (as announced at the end of the page:
https://emscripten.org/docs/porting/pthreads.html

There is no visible performance gain. It was worth give it try, but no success there. Also i don't understand how this additional fileName.worker.js file works.

Regards

Adam

W dniu 28.01.2021 o 19:21, 'Thomas Lively' via emscripten-discuss pisze:
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/wwpsK7rD2gM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to emscripten-disc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAJZD_EV_UNZCJL_d%3DiKcZfnacUNEv5uH%2B668vnm6yJHw2QOX7Q%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages