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)