I use pre compiled binaryen from emdsk:
wasm-opt version 110 (version_101-1028-g590f63782)
The outpus of BINARYEN_PASS_DEBUG=1:
[PassRunner] running passes
[PassRunner] running pass: generate-dyncalls... 0.0692962 seconds.
[PassRunner] (validating)
[PassRunner] running pass: legalize-js-interface... 0.0484083 seconds.
[PassRunner] (validating)
[PassRunner] running pass: strip-target-features... 0.000597624 seconds.
[PassRunner] (validating)
[PassRunner] running pass: strip-dwarf... 0.00404366 seconds.
[PassRunner] (validating)
[PassRunner] passes took 0.122346 seconds.
[PassRunner] (final validation)
[PassRunner] running passes
[PassRunner] running pass: strip-dwarf... 0.00130085 seconds.
[PassRunner] (validating)
[PassRunner] running pass: post-emscripten... 0.169116 seconds.
[PassRunner] (validating)
[PassRunner] running pass: duplicate-function-elimination... 1.00175 seconds.
[PassRunner] (validating)
[PassRunner] running pass: memory-packing... 0.0121084 seconds.
[PassRunner] (validating)
[PassRunner] running pass: once-reduction... 0.0510261 seconds.
[PassRunner] (validating)
[PassRunner] running pass: ssa-nomerge... 1.748 seconds.
[PassRunner] (validating)
[PassRunner] running pass: dce... 0.839832 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-names... 0.20939 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-brs... 1.14575 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-names... 0.499286 seconds.
[PassRunner] (validating)
[PassRunner] running pass: optimize-instructions... 0.93456 seconds.
[PassRunner] (validating)
[PassRunner] running pass: pick-load-signs... 0.136761 seconds.
[PassRunner] (validating)
[PassRunner] running pass: precompute-propagate... 2.21939 seconds.
[PassRunner] (validating)
[PassRunner] running pass: optimize-added-constants-propagate... 2.78762 seconds.
[PassRunner] (validating)
[PassRunner] running pass: code-pushing... 0.210713 seconds.
[PassRunner] (validating)
[PassRunner] running pass: simplify-locals-nostructure... 1.38406 seconds.
[PassRunner] (validating)
[PassRunner] running pass: vacuum... 0.963663 seconds.
[PassRunner] (validating)
[PassRunner] running pass: reorder-locals... 0.180559 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-brs... 0.601953 seconds.
[PassRunner] (validating)
[PassRunner] running pass: merge-locals... 1.2248 seconds.
[PassRunner] (validating)
[PassRunner] running pass: coalesce-locals... 8.24509 seconds.
[PassRunner] (validating)
[PassRunner] running pass: local-cse... 0.665407 seconds.
[PassRunner] (validating)
[PassRunner] running pass: simplify-locals... 1.9897 seconds.
[PassRunner] (validating)
[PassRunner] running pass: vacuum... 0.959832 seconds.
[PassRunner] (validating)
[PassRunner] running pass: reorder-locals... 0.15094 seconds.
[PassRunner] (validating)
[PassRunner] running pass: coalesce-locals... 0.956974 seconds.
[PassRunner] (validating)
[PassRunner] running pass: reorder-locals... 0.152977 seconds.
[PassRunner] (validating)
[PassRunner] running pass: vacuum... 0.968055 seconds.
[PassRunner] (validating)
[PassRunner] running pass: code-folding... 5.8405 seconds.
[PassRunner] (validating)
[PassRunner] running pass: merge-blocks... 0.761645 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-brs... 0.789087 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-names... 0.120671 seconds.
[PassRunner] (validating)
[PassRunner] running pass: merge-blocks... 0.366825 seconds.
[PassRunner] (validating)
[PassRunner] running pass: precompute-propagate... 1.94412 seconds.
[PassRunner] (validating)
[PassRunner] running pass: optimize-instructions... 0.825021 seconds.
[PassRunner] (validating)
[PassRunner] running pass: rse... 0.800074 seconds.
[PassRunner] (validating)
[PassRunner] running pass: vacuum... 0.925147 seconds.
[PassRunner] (validating)
[PassRunner] running pass: dae-optimizing... 4.91022 seconds.
[PassRunner] (validating)
[PassRunner] running pass: inlining-optimizing... 25.834 seconds.
[PassRunner] (validating)
[PassRunner] running pass: duplicate-function-elimination... 0.258486 seconds.
[PassRunner] (validating)
[PassRunner] running pass: duplicate-import-elimination... 0.00069257 seconds.
[PassRunner] (validating)
[PassRunner] running pass: merge-similar-functions... 0.169829 seconds.
[PassRunner] (validating)
[PassRunner] running pass: simplify-globals-optimizing... 0.21235 seconds.
[PassRunner] (validating)
[PassRunner] running pass: remove-unused-module-elements... 0.112781 seconds.
[PassRunner] (validating)
[PassRunner] running pass: reorder-globals... 0.00203702 seconds.
[PassRunner] (validating)
[PassRunner] running pass: directize... 0.0837749 seconds.
[PassRunner] (validating)
[PassRunner] running pass: generate-stack-ir... 0.137842 seconds.
[PassRunner] (validating)
[PassRunner] running pass: optimize-stack-ir... 8.89946 seconds.
[PassRunner] (validating)
[PassRunner] running pass: asyncify... 286.814 seconds.
[PassRunner] (validating)
[PassRunner] running pass: strip-debug... 0.00531564 seconds.
[PassRunner] (validating)
[PassRunner] running pass: strip-producers... 0.00134905 seconds.
[PassRunner] (validating)
[PassRunner] passes took 370.225 seconds.
[PassRunner] (final validation)
[PassRunner] running passes
[PassRunner] running pass: print-function-map... 0.0223957 seconds.
[PassRunner] (validating)
[PassRunner] passes took 0.0223957 seconds.
[PassRunner] (final validation)
It said that it took 370 sec (~6min), but actually it took 13.5 min:
Maybe it somehowe related to asyncify, I want to add function into asyncify list by name (without sig), to do this I use:
funcName(*)*
But anyway regulard dosbox (not-x) do wasm-opt for 1-2 minutes on same asyncify lists (1.4Mb).