Re: shared libraries + lto ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014-08-01 11:09:38 +0200, Alain Meunier wrote:
> I would like to know if one can use lto with shared libraries and
> leverage all the goodness of both worlds ?
> 
> My tests show that it works but not sure if lto brang something or
> not in the game.

I did some timings with MPFR + GMP two years ago and I found that it
was useless to use LTO with the shared library (I even wonder whether
this can make sense at all). Here are the results:

Precision 10:
               shared        static
             arg   macro   arg   macro
Default     3.480  3.470  2.670  2.690
LTO paths   4.000  3.980  2.640  2.660
With LTO    4.110  3.970  2.320  2.410

Precision 80:
               shared        static
             arg   macro   arg   macro
Default     5.520  5.470  4.950  5.000
LTO paths   5.510  5.500  4.440  4.470
With LTO    5.540  5.520  4.040  4.120

Precision 300:
               shared        static
             arg   macro   arg   macro
Default     6.770  6.560  5.950  5.960
LTO paths   6.140  5.980  5.060  5.020
With LTO    5.980  5.960  4.280  4.400

Conclusion (on these examples):
  * There isn't much difference between a precision given in argument
    and a fixed precision given via a macro (known at compile time of
    the main program).
  * Using a static library instead of a shared library can yield a
    speedup of up to 44% (this happens with LTO enabled), i.e. that's
    almost twice as fast!
  * LTO should be used only with -static (for performance, but also
    when considering practical use, it is pointless to use LTO with
    shared libraries).
  * The LTO speedup ("With LTO" compared to "LTO paths" in static) can
    be up to 15% (28% if we compare to the default static library, but
    we are not just measuring LTO in this case).
  * The LTO speedup compared to traditional linking (shared library
    from the vendor, here Debian/unstable) can be up to 37%.

Note: The versions of MPFR in "Default" (Debian packages providing
MPFR 3.1.0-p10) and with LTO paths (MPFR 3.1.1-p2) are not exactly
the same, but the differences consist only of bug fixes, so that the
tested source code should be the same.

-- 
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux