hey all, hope you’re well.
i discovered that two very similar windows environments (same msvc, same code, one win10 AMD machine and one win11 intel NUC) were building slightly different code: the win10 machine generates code that’s reliably about 5% faster (!!).
i tried diffing everything and i’m out of ideas, my code and build scripts are pretty clean and the environments seem basically identical.
i’m guessing some optimization heuristic is firing differently based on … something. so i thought i’d try using PGO to give consistent optimization hints to the linker.
however, i’m having trouble making it work:
this is what works:
- i can get my VST3 generating filename!n.pgc files when i run my (“Release” compiled) program hosted in reaper.
- i can get my JUCE standalone app generating PGC and PGD files correctly
this is what doesn’t work:
- .pgd files don’t get auto-generated for my vst3. i CAN force them to generate with pgosweep, but all the tools including msvc and pgomgr are complaining about the output file with “Unhandled PDB error”. there are no meaningful hits for this on google that seem relevant.
- there doesn’t seem to be a way to swap the standalone app traces in for the vst3, the tools complain (even those the only instrumented module is the code common to both).
- because of the above, linking VST3 with the profile file doesn’t work.
- (i haven’t even started to worry about AAX builds)
…also some general unease about the weird workflow. do i have to re-run the manual profiling process with every release, or are the PGD files tolerant of program changes?
or should i just give up on the 5% perf difference? it’s like 0.1% CPU on this machine, but i’d like to make everything hermetic and reproducible.
(also asking gemini AI for help caused it to error out with “An error has occurred”, lol)
thanks!
