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