Well, to me LTO _used to_ be better. But for some reason, since the switch to upstream LLVM backend, it is no more very interesting.

I have been surprised by this, and decided to disable LTO on all my projects since the switch.  But maybe there's a bug lurking somewhere: LTO is simply not correctly done anymore (?)

@Emscripten team: any thoughts on this possibility ? or is it simply because the Wasm backend now does things extremely well ?

Le 28/02/2020 à 12:49, Floh a écrit :
...hm ok I did a quick check on my 8-bit emulators, and I have to agree. I'm seeing about 10% size agree for the generated WASM (which I'd be willing to eat if the performance would improve too), but performance isn't any noticeably better. I guess the WASM runtimes either do the inlining themselves, or can the function call overhead doesn't matter as much as it used to.

On Friday, 28 February 2020 12:16:39 UTC+1, Floh wrote:

    When I last tested I generally saw quite noticeable improvements
    for inlined code (which LTO does across compilation units). Most
    of my code is straight C without inline functions in headers. I
    guess this scenario benefits more from LTO than typical C++ code
    where usually a lot of implementation code sits in inline/template
    functions (at the cost of increasing compile time for each
    compilation unit, versus increasing link-time once for LTO).

    I think it depends extremely on the code base at hand whether LTO
    is useful or not :)

    On Friday, 28 February 2020 11:32:09 UTC+1, Gabriel CV wrote:

        Glad to!

        By the way, I don't find that LTO brings any performance
        improvements compared to a non-LTO builds (on latests
        Emscripten backend). Maybe +1% at most (more probably
        benchmark noise to me), but sometime more than 10% worse, and
        at the expense of a *significant *link time increase and
        *significant *binary size increase!

        So I am not sure this is really an interesting option anymore...


        Le 28/02/2020 à 11:14, Floh a écrit :

        Whoops, thanks for making me aware of WASM_OBJECT_FILES being
        1 by default... I've been building with LTO all the time
        (since the asm.js days) and was expecting that the WASM
        backend would behave identically there.

        -Floh.

        On Friday, 28 February 2020 10:07:11 UTC+1, Gabriel CV wrote:

            Hi,

            Try to remove --llvm-lto 3, as it might increase binary
            size significantly when combined with -O2 or -O3 (and I
            am not sure it is very usefull without using
            -DWASM_OBJECT_FILES=0)

            Le 28/02/2020 à 08:12, Rohit Saini a écrit :
            Hi All,

            Previously we were using 1.38.28 emscripten version.
            Recently we updated to latest llvm backend 1.39.7. But
            with new backend there is drastic increase in wasm size.
            Size of my side modules become almost double and size of
            my main module also increased from 2.7mb to almost 4mb.
            Firstly we are compiling to object files then we are
            linking them to make wasm. Below are the flags I am
            passing while compiling and linking. Is this size
            increase intentional or do I have to change compiling or
            linking flags someway.

            Compiling flags for main module:
               -Oz -fPIC
            -s DISABLE_EXCEPTION_CATCHING=0  -Wno-builtin-macro-redefined
            -Wno-dollar-in-identifier-extension

            Compiling flags for side module:
              -std=c++14 -fPIC

            Linking flags for main module:
            -O3 -s EVAL_CTORS=0 --closure
            0 -s ALIASING_FUNCTION_POINTERS=0 -s 
ELIMINATE_DUPLICATE_FUNCTIONS=1 -s
            ELIMINATE_DUPLICATE_FUNCTIONS_PASSES=12 --llvm-lto 3 -s
            FORCE_FILESYSTEM=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s 
'EXTRA_EXPORTED_RUNTIME_METHODS=["getTempRet0","setTempRet0", "cwrap"]' -s
            [email protected]
            -s DISABLE_EXCEPTION_CATCHING=2 -s
            [email protected]

            Linking flags for side module:
            -s SIDE_MODULE=1 -s WASM=1 -Oz -s EVAL_CTORS=0 --closure
            0 -s ALIASING_FUNCTION_POINTERS=0 -s
            ELIMINATE_DUPLICATE_FUNCTIONS=1 -s
            ELIMINATE_DUPLICATE_FUNCTIONS_PASSES=12 --llvm-lto 3 -s
            ERROR_ON_UNDEFINED_SYMBOLS=0
-- 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/5f30a113-7203-4eba-9426-9f626c51ec26%40googlegroups.com
            
<https://groups.google.com/d/msgid/emscripten-discuss/5f30a113-7203-4eba-9426-9f626c51ec26%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 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/e8a9f44f-a8f5-46f2-b440-e2356f285d28%40googlegroups.com
        
<https://groups.google.com/d/msgid/emscripten-discuss/e8a9f44f-a8f5-46f2-b440-e2356f285d28%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
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] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/38cfb2aa-6b9c-4dfb-a978-1c9c520d3693%40googlegroups.com <https://groups.google.com/d/msgid/emscripten-discuss/38cfb2aa-6b9c-4dfb-a978-1c9c520d3693%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
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/2e3a6f1d-869e-06f5-5341-a031aaa8fc09%40gmail.com.

Reply via email to