I think I just improved it a bit, I looked over some code for the ApplyFreePromotionOnMove code, and move it into it's own function DoPromotion(), and cut out some of the repeated garbage. Also, I added a check to see if the city is in disorder, and if it is, to skip the function entirely. That might speed it up, maybe 0.5%.
The problem is ultimately, that I am expanding the codebase. Some of my new XML features, especially Unit Class Production Modifiers and Apply Free Promotion on move really can have a moderate slowdown effect. They each force the game to loop through every unit or building, and check... Oh, and don't forget the TAB modcomp or vicinity bonus. They do even more calculations than those... RoM is already a slow game as is... I guess its the price you pay for innovative features.
I guess that's why the Firaxis Dev's didn't add very many XML tags that they knew they weren't going to use. In fact, the only BTS standard tag I can think of that they didn't use was feature damage...
However, if you ever personally catch or find any code optimizations in my SDK sources, please share them.