visual-c++version-controlcontinuous-integrationcompiler-optimizationpgo

Where should I store PGO database files?


I have been looking into using Profile Guided Optimisation in Visual C++ 2013. I'm happy with executing the training set using different scenarios as a manual step, but would like the final optimised build and link to work on our CI build server.

With that in mind, where is the best place for me to store the PGO profile databases? Storing them into version control (Git in our case) is the most convenient place, but I'm aware that they are binary files in the order of tens, potentially even hundreds, of megabytes and these won't necessarily store well in a source control system.

Alternatively, is there a better solution or best practices for integrating PGO into our automated builds?


Solution

  • Our solution was to store the PGO files using Git LFS (see also this question).

    The advantages of this approach:

    The only mild complication of this approach, which didn't significantly affect us, is that all machines and software must support and install Git LFS, from development workstations to CI servers.