From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22694 invoked by alias); 1 Aug 2014 10:47:22 -0000 Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org Received: (qmail 22682 invoked by uid 89); 1 Aug 2014 10:47:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=ham version=3.3.2 X-HELO: ioooi.vinc17.net Received: from ioooi.vinc17.net (HELO ioooi.vinc17.net) (92.243.22.117) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 01 Aug 2014 10:47:19 +0000 Received: by ioooi.vinc17.net (Postfix, from userid 1001) id 581F75D8; Fri, 1 Aug 2014 12:47:16 +0200 (CEST) Date: Fri, 01 Aug 2014 10:47:00 -0000 From: Vincent Lefevre To: gcc-help@gcc.gnu.org Subject: Re: shared libraries + lto ? Message-ID: <20140801104716.GA11564@ioooi.vinc17.net> Mail-Followup-To: gcc-help@gcc.gnu.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Mailer-Info: http://www.vinc17.net/mutt/ User-Agent: Mutt/1.5.23-6361-vl-r59709 (2014-07-25) X-IsSubscribed: yes X-SW-Source: 2014-08/txt/msg00003.txt.bz2 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 - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)