i actually just managed to cut my CPU time rather dramatically.. i'm still just starting, but the room i'm in has a decent enough quantity of swampland.. it seems that even if a creep can't move, when you call creep.moveTo() it checks and if it's been x ticks since the last path calc, runs it again. fatigue timers in swamps exceed that ammount, so i had creeps that were running the pathing section of moveTo() even though they still couldn't move.
I went from averaging 5+ CPU/tick for my 6 creeps to about 2 just by this:
if (!creep.fatige){
creep.moveTo(xx,xx)
}
there are still a few spikes once in a while, but they're far more manageable.. in fact, before that change, even with my 30 CPU starter sub, i was getting a yellow indicator for CPU time once in a while... not anymore.
i know i could do better actually caching the path, but i'm not that advanced yet. either way, movement, even without needing to calculate the path, is more expensive than checking fatigue.. so if you have swamps, make sure you check fatigue BEFORE you issue a move command.