I'm crossposting this from H2P because it is important -- just doing a standard sim is going to lead people astray and tell them to not gem Haste.
Originally Posted by stiglet
The way that SimC generates stat weights is fairly simple. It first runs a the profile you've provided without any changes to determine the DPS it can do. After that, it runs the profile again for each stat that you wish to get a weight for. It does this by adding 1000 to the value, re-running it, and then computing the difference between the two, then, dividing it by the offset value (1000).
Example: I run my profile and get 100,000 DPS. I run the scale factor for Int (by the system adding 1000 Int to my profile) and get 105,000 DPS. To get the scale factor for Int, I use this formula:
So my scaling factor for Int is 5. I do the same for Haste, Crit, Mastery, and Spell Power.
(105000 - 100000) / 1000 = 5.00
Hit/Spirit is a little different. Because Hit is cap-able, if I add more on to a capped profile I won't see any difference. SimC knows this, so it subtracts 1000 and runs the profiles in the exact same way.
Why is this important? For Shadow Priests, we are very dependent on Haste and, more specifically, Haste Breakpoints, for maximizing our DPS right now. When SimC computes the scaling value of Haste, any breakpoints we've already passed are ignored and, unless there is a breakpoint within the next 1000 haste rating of your character, will sim lower than it does in reality.
For my BiS lists, I'm running sims to generate scaling factors both the normal +1000 way, but also doing some downscaling (-1000) to properly account for these breakpoints affecting Haste.
This isn't to say that the value that SimC is giving you is wrong, just that if you get 1000 secondary stats to put in to Haste, Mastery, or Crit, you'll get the biggest result out of putting them in to Mastery. It IS NOT saying that Haste is terrible and you should dump as much as possible.
If you want to try simming the downscaling, you can add this to the top of your profile (above the "actionlist=")