TSV Utilities release with LTO and PGO enabled
Jon Degenhardt
jond at noreply.com
Tue Jan 16 02:45:39 UTC 2018
On Tuesday, 16 January 2018 at 00:19:24 UTC, Martin Nowak wrote:
> On Sunday, 14 January 2018 at 23:18:42 UTC, Jon Degenhardt
> wrote:
>> Combined, LTO and PGO resulted in performance improvements
>> greater than 25% on three of my standard six benchmarks, and
>> five of the six improved at least 8%.
>
> Yay, I'm usually seeing double digit improvements for PGO
> alone, and single digit improvements for LTO. Meaning PGO has
> more effect even though LTO seems to be the more hyped one.
> Have you bothered benchmarking them separately?
Last spring I made a few quick tests of both separately. That was
just against the app code, without druntime/phobos. Saw some
benefit from LTO, mainly one of the tools, and not much from PGO.
More recently I tried LTO standalone and LTO plus PGO, both
against app code and druntime/phobos, but not PGO standalone. The
LTO benchmarks are here:
https://github.com/eBay/tsv-utils-dlang/blob/master/docs/dlang-meetup-14dec2017.pdf. I've haven't published the LTO + PGO benchmarks.
The takeaway from my tests is that LTO and PGO will benefit
different apps differently, perhaps in ways not easily predicted.
One of my tools benefited primarily from PGO, two primarily from
LTO, and one materially from both. So, it is worth trying both.
For both, the big win was from optimizing across app code and
libs (druntime/phobos in my case). It'd be interesting to see if
other apps see similar behavior, either with phobos/druntime or
other libraries, perhaps libraries from dub dependencies.
More information about the Digitalmars-d-announce
mailing list