Link-Time Optimization (LTO)
On 15/07/2020 09:50, Jeroen Ooms wrote:
On Tue, Jul 14, 2020 at 4:22 PM Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
This is a rather technical post about how libraries of compiled code can be further optimized. LTO generally produces smaller[*] and faster code (typically by a few percent) at the expense of increased installation time and is being used for large projects such as browsers and soon for some Linux distributions. I have committed a series of enhancements to LTO support in R-devel and will shortly port the more important of these to R-patched.
Would it be worthwhile looking into this for Windows? We did enable support for LTO in the rtools40 toolchains*, but those are gcc-8.3.0 and some of the benefits require gcc-9. * https://github.com/r-windows/rtools-packages/blob/master/mingw-w64-gcc/PKGBUILD#L166
Way off topic for R-sig-mac, but it is under discussion for Windows once all the planned LTO changes are in. A minor point which is relevant here: the recommended gfortran distribution for macOS (which is from GCC 8.2) contains gcc and g++. So Mac users could try that to get C/Fortran consistency checks. However, only much later versions are compatible with Catalina's SDK (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90835), and from trying on High Sierra it looks like Apple's linker does not understand GCC's LTO format.
Brian D. Ripley, ripley at stats.ox.ac.uk Emeritus Professor of Applied Statistics, University of Oxford