Some Updates/Clarifications on 64bit and PGO WhitePapers

In this posting I'd just like to do some errata/updates to a couple of whitepapers which I have posted on MSDN.

First, in my data alignment article (located at: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vcconwindowsdataalignmentonipfx86x86-64.asp , which you can tell is pretty old because I refer to the x64 architecture as x86-64) I state that "On both of the 64-bit platforms, the stack is 16-byte aligned."   That statement is technically accurate, but I've had at least one person misread that statement.  To be more clear this means that each stack frame gets allocated on a 16-byte boundary, but any given element within the stack frame may be aligned on a different boundary (for example 8-byte or 4-byte boundaries).

Another article I have is one on profile-guided optimization (https://msdn.microsoft.com/library/en-us/dv_vstechart/html/profileguidedoptimization.asp).  There are two comments at the end of that article which no longer apply:

   "6. You can use the speed switch to change the speed/size thresholds.
7. Use the inline threshold switch with great caution. The values from 0-100 aren't linear."

The functionality to control the inline and speed/size thresholds does not exist in the RTM version of VC2005.  It turned out that they were too confusing to use, and ended up being more problematic than useful.  We decided it would be best to simply remove those knobs.

While that article is a good explanation for the ideas around PGO, the best place to go for actual usage is the new VC2005 documentation on PGO.  I particularly like the walkthrough written by our main tester for the PGO feature: https://msdn2.microsoft.com/library/xct6db7f(en-us,vs.80).aspx

Back to working on my PDC slides...